public abstract class java.util.concurrent.atomic.AtomicReferenceFieldUpdater<T, V>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: java.util.concurrent.atomic.AtomicReferenceFieldUpdater
  super_class: java.lang.Object
{
  public static <U, W> java.util.concurrent.atomic.AtomicReferenceFieldUpdater<U, W> newUpdater(java.lang.Class<U>, java.lang.Class<W>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.lang.Class tclass
        start local 1 // java.lang.Class vclass
        start local 2 // java.lang.String fieldName
         0: .line 115
            new java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
            dup
         1: .line 116
            aload 0 /* tclass */
            aload 1 /* vclass */
            aload 2 /* fieldName */
            invokestatic jdk.internal.reflect.Reflection.getCallerClass:()Ljava/lang/Class;
         2: .line 115
            invokespecial java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<init>:(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
            areturn
        end local 2 // java.lang.String fieldName
        end local 1 // java.lang.Class vclass
        end local 0 // java.lang.Class tclass
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0     tclass  Ljava/lang/Class<TU;>;
            0    3     1     vclass  Ljava/lang/Class<TW;>;
            0    3     2  fieldName  Ljava/lang/String;
    Signature: <U:Ljava/lang/Object;W:Ljava/lang/Object;>(Ljava/lang/Class<TU;>;Ljava/lang/Class<TW;>;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TU;TW;>;
    RuntimeVisibleAnnotations: 
      jdk.internal.reflect.CallerSensitive()
    MethodParameters:
           Name  Flags
      tclass     
      vclass     
      fieldName  

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
         0: .line 122
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 123
            return
        end local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;

  public abstract boolean compareAndSet(T, V, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;TV;TV;)Z
    MethodParameters:
        Name  Flags
      obj     
      expect  
      update  

  public abstract boolean weakCompareAndSet(T, V, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;TV;TV;)Z
    MethodParameters:
        Name  Flags
      obj     
      expect  
      update  

  public abstract void set(T, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;TV;)V
    MethodParameters:
          Name  Flags
      obj       
      newValue  

  public abstract void lazySet(T, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;TV;)V
    MethodParameters:
          Name  Flags
      obj       
      newValue  

  public abstract V get();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;)TV;
    MethodParameters:
      Name  Flags
      obj   

  public V getAndSet(T, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
        start local 1 // java.lang.Object obj
        start local 2 // java.lang.Object newValue
         0: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* prev */
        start local 3 // java.lang.Object prev
         1: .line 198
            aload 0 /* this */
            aload 1 /* obj */
            aload 3 /* prev */
            aload 2 /* newValue */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 0
         2: .line 199
            aload 3 /* prev */
            areturn
        end local 3 // java.lang.Object prev
        end local 2 // java.lang.Object newValue
        end local 1 // java.lang.Object obj
        end local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
            0    3     1       obj  TT;
            0    3     2  newValue  TV;
            1    3     3      prev  TV;
    Signature: (TT;TV;)TV;
    MethodParameters:
          Name  Flags
      obj       
      newValue  

  public final V getAndUpdate(T, java.util.function.UnaryOperator<V>);
    descriptor: (Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
        start local 1 // java.lang.Object obj
        start local 2 // java.util.function.UnaryOperator updateFunction
         0: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* prev */
        start local 3 // java.lang.Object prev
         1: .line 219
            aload 2 /* updateFunction */
            aload 3 /* prev */
            invokeinterface java.util.function.UnaryOperator.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
         2: .line 220
            aload 0 /* this */
            aload 1 /* obj */
            aload 3 /* prev */
            aload 4 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 0
         3: .line 221
            aload 3 /* prev */
            areturn
        end local 4 // java.lang.Object next
        end local 3 // java.lang.Object prev
        end local 2 // java.util.function.UnaryOperator updateFunction
        end local 1 // java.lang.Object obj
        end local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
            0    4     1             obj  TT;
            0    4     2  updateFunction  Ljava/util/function/UnaryOperator<TV;>;
            1    4     3            prev  TV;
            2    4     4            next  TV;
    Signature: (TT;Ljava/util/function/UnaryOperator<TV;>;)TV;
    MethodParameters:
                Name  Flags
      obj             
      updateFunction  

  public final V updateAndGet(T, java.util.function.UnaryOperator<V>);
    descriptor: (Ljava/lang/Object;Ljava/util/function/UnaryOperator;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
        start local 1 // java.lang.Object obj
        start local 2 // java.util.function.UnaryOperator updateFunction
         0: .line 240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* prev */
        start local 3 // java.lang.Object prev
         1: .line 241
            aload 2 /* updateFunction */
            aload 3 /* prev */
            invokeinterface java.util.function.UnaryOperator.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
         2: .line 242
            aload 0 /* this */
            aload 1 /* obj */
            aload 3 /* prev */
            aload 4 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 0
         3: .line 243
            aload 4 /* next */
            areturn
        end local 4 // java.lang.Object next
        end local 3 // java.lang.Object prev
        end local 2 // java.util.function.UnaryOperator updateFunction
        end local 1 // java.lang.Object obj
        end local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
            0    4     1             obj  TT;
            0    4     2  updateFunction  Ljava/util/function/UnaryOperator<TV;>;
            1    4     3            prev  TV;
            2    4     4            next  TV;
    Signature: (TT;Ljava/util/function/UnaryOperator<TV;>;)TV;
    MethodParameters:
                Name  Flags
      obj             
      updateFunction  

  public final V getAndAccumulate(T, V, java.util.function.BinaryOperator<V>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
        start local 1 // java.lang.Object obj
        start local 2 // java.lang.Object x
        start local 3 // java.util.function.BinaryOperator accumulatorFunction
         0: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* prev */
        start local 4 // java.lang.Object prev
         1: .line 267
            aload 3 /* accumulatorFunction */
            aload 4 /* prev */
            aload 2 /* x */
            invokeinterface java.util.function.BinaryOperator.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* next */
        start local 5 // java.lang.Object next
         2: .line 268
            aload 0 /* this */
            aload 1 /* obj */
            aload 4 /* prev */
            aload 5 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 0
         3: .line 269
            aload 4 /* prev */
            areturn
        end local 5 // java.lang.Object next
        end local 4 // java.lang.Object prev
        end local 3 // java.util.function.BinaryOperator accumulatorFunction
        end local 2 // java.lang.Object x
        end local 1 // java.lang.Object obj
        end local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
            0    4     1                  obj  TT;
            0    4     2                    x  TV;
            0    4     3  accumulatorFunction  Ljava/util/function/BinaryOperator<TV;>;
            1    4     4                 prev  TV;
            2    4     5                 next  TV;
    Signature: (TT;TV;Ljava/util/function/BinaryOperator<TV;>;)TV;
    MethodParameters:
                     Name  Flags
      obj                  
      x                    
      accumulatorFunction  

  public final V accumulateAndGet(T, V, java.util.function.BinaryOperator<V>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
        start local 1 // java.lang.Object obj
        start local 2 // java.lang.Object x
        start local 3 // java.util.function.BinaryOperator accumulatorFunction
         0: .line 292
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* prev */
        start local 4 // java.lang.Object prev
         1: .line 293
            aload 3 /* accumulatorFunction */
            aload 4 /* prev */
            aload 2 /* x */
            invokeinterface java.util.function.BinaryOperator.apply:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* next */
        start local 5 // java.lang.Object next
         2: .line 294
            aload 0 /* this */
            aload 1 /* obj */
            aload 4 /* prev */
            aload 5 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReferenceFieldUpdater.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 0
         3: .line 295
            aload 5 /* next */
            areturn
        end local 5 // java.lang.Object next
        end local 4 // java.lang.Object prev
        end local 3 // java.util.function.BinaryOperator accumulatorFunction
        end local 2 // java.lang.Object x
        end local 1 // java.lang.Object obj
        end local 0 // java.util.concurrent.atomic.AtomicReferenceFieldUpdater this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater<TT;TV;>;
            0    4     1                  obj  TT;
            0    4     2                    x  TV;
            0    4     3  accumulatorFunction  Ljava/util/function/BinaryOperator<TV;>;
            1    4     4                 prev  TV;
            2    4     5                 next  TV;
    Signature: (TT;TV;Ljava/util/function/BinaryOperator<TV;>;)TV;
    MethodParameters:
                     Name  Flags
      obj                  
      x                    
      accumulatorFunction  
}
Signature: <T:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "AtomicReferenceFieldUpdater.java"
NestMembers:
  java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl  java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1
InnerClasses:
  private final AtomicReferenceFieldUpdaterImpl = java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl of java.util.concurrent.atomic.AtomicReferenceFieldUpdater