public class org.graalvm.compiler.core.common.FieldsScanner
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.core.common.FieldsScanner
  super_class: java.lang.Object
{
  private final org.graalvm.compiler.core.common.FieldsScanner$CalcOffset calc;
    descriptor: Lorg/graalvm/compiler/core/common/FieldsScanner$CalcOffset;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public final java.util.ArrayList<org.graalvm.compiler.core.common.FieldsScanner$FieldInfo> data;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/core/common/FieldsScanner$FieldInfo;>;

  public void <init>(org.graalvm.compiler.core.common.FieldsScanner$CalcOffset);
    descriptor: (Lorg/graalvm/compiler/core/common/FieldsScanner$CalcOffset;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.core.common.FieldsScanner this
        start local 1 // org.graalvm.compiler.core.common.FieldsScanner$CalcOffset calc
         0: .line 99
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 97
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.graalvm.compiler.core.common.FieldsScanner.data:Ljava/util/ArrayList;
         2: .line 100
            aload 0 /* this */
            aload 1 /* calc */
            putfield org.graalvm.compiler.core.common.FieldsScanner.calc:Lorg/graalvm/compiler/core/common/FieldsScanner$CalcOffset;
         3: .line 101
            return
        end local 1 // org.graalvm.compiler.core.common.FieldsScanner$CalcOffset calc
        end local 0 // org.graalvm.compiler.core.common.FieldsScanner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/compiler/core/common/FieldsScanner;
            0    4     1  calc  Lorg/graalvm/compiler/core/common/FieldsScanner$CalcOffset;
    MethodParameters:
      Name  Flags
      calc  

  public void scan(java.lang.Class<?>, java.lang.Class<?>, );
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=11, args_size=4
        start local 0 // org.graalvm.compiler.core.common.FieldsScanner this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.Class endClazz
        start local 3 // boolean includeTransient
         0: .line 111
            aload 1 /* clazz */
            astore 4 /* currentClazz */
        start local 4 // java.lang.Class currentClazz
         1: .line 112
            goto 13
         2: .line 113
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 4 /* currentClazz */
            invokevirtual java.lang.Class.getDeclaredFields:()[Ljava/lang/reflect/Field;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 11
      StackMap locals: org.graalvm.compiler.core.common.FieldsScanner java.lang.Class java.lang.Class int java.lang.Class top int int java.lang.reflect.Field[]
      StackMap stack:
         3: aload 8
            iload 6
            aaload
            astore 5 /* field */
        start local 5 // java.lang.reflect.Field field
         4: .line 114
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isStatic:(I)Z
            ifeq 6
         5: .line 115
            goto 10
         6: .line 117
      StackMap locals: org.graalvm.compiler.core.common.FieldsScanner java.lang.Class java.lang.Class int java.lang.Class java.lang.reflect.Field int int java.lang.reflect.Field[]
      StackMap stack:
            iload 3 /* includeTransient */
            ifne 8
            aload 5 /* field */
            invokevirtual java.lang.reflect.Field.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isTransient:(I)Z
            ifeq 8
         7: .line 118
            goto 10
         8: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.core.common.FieldsScanner.calc:Lorg/graalvm/compiler/core/common/FieldsScanner$CalcOffset;
            aload 5 /* field */
            invokeinterface org.graalvm.compiler.core.common.FieldsScanner$CalcOffset.getOffset:(Ljava/lang/reflect/Field;)J
            lstore 9 /* offset */
        start local 9 // long offset
         9: .line 121
            aload 0 /* this */
            aload 5 /* field */
            lload 9 /* offset */
            invokevirtual org.graalvm.compiler.core.common.FieldsScanner.scanField:(Ljava/lang/reflect/Field;J)V
        end local 9 // long offset
        end local 5 // java.lang.reflect.Field field
        10: .line 113
      StackMap locals: org.graalvm.compiler.core.common.FieldsScanner java.lang.Class java.lang.Class int java.lang.Class top int int java.lang.reflect.Field[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        11: iload 6
            iload 7
            if_icmplt 3
        12: .line 123
            aload 4 /* currentClazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 4 /* currentClazz */
        13: .line 112
      StackMap locals: org.graalvm.compiler.core.common.FieldsScanner java.lang.Class java.lang.Class int java.lang.Class
      StackMap stack:
            aload 4 /* currentClazz */
            aload 2 /* endClazz */
            if_acmpne 2
        14: .line 125
            return
        end local 4 // java.lang.Class currentClazz
        end local 3 // boolean includeTransient
        end local 2 // java.lang.Class endClazz
        end local 1 // java.lang.Class clazz
        end local 0 // org.graalvm.compiler.core.common.FieldsScanner this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   15     0              this  Lorg/graalvm/compiler/core/common/FieldsScanner;
            0   15     1             clazz  Ljava/lang/Class<*>;
            0   15     2          endClazz  Ljava/lang/Class<*>;
            0   15     3  includeTransient  Z
            1   15     4      currentClazz  Ljava/lang/Class<*>;
            4   10     5             field  Ljava/lang/reflect/Field;
            9   10     9            offset  J
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;Z)V
    MethodParameters:
                  Name  Flags
      clazz             
      endClazz          
      includeTransient  

  protected void scanField(java.lang.reflect.Field, long);
    descriptor: (Ljava/lang/reflect/Field;J)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=4, args_size=3
        start local 0 // org.graalvm.compiler.core.common.FieldsScanner this
        start local 1 // java.lang.reflect.Field field
        start local 2 // long offset
         0: .line 128
            aload 0 /* this */
            getfield org.graalvm.compiler.core.common.FieldsScanner.data:Ljava/util/ArrayList;
            new org.graalvm.compiler.core.common.FieldsScanner$FieldInfo
            dup
            lload 2 /* offset */
            aload 1 /* field */
            invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
            aload 1 /* field */
            invokevirtual java.lang.reflect.Field.getType:()Ljava/lang/Class;
            aload 1 /* field */
            invokevirtual java.lang.reflect.Field.getDeclaringClass:()Ljava/lang/Class;
            invokespecial org.graalvm.compiler.core.common.FieldsScanner$FieldInfo.<init>:(JLjava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)V
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         1: .line 129
            return
        end local 2 // long offset
        end local 1 // java.lang.reflect.Field field
        end local 0 // org.graalvm.compiler.core.common.FieldsScanner this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/graalvm/compiler/core/common/FieldsScanner;
            0    2     1   field  Ljava/lang/reflect/Field;
            0    2     2  offset  J
    MethodParameters:
        Name  Flags
      field   
      offset  
}
SourceFile: "FieldsScanner.java"
NestMembers:
  org.graalvm.compiler.core.common.FieldsScanner$CalcOffset  org.graalvm.compiler.core.common.FieldsScanner$DefaultCalcOffset  org.graalvm.compiler.core.common.FieldsScanner$FieldInfo
InnerClasses:
  public abstract CalcOffset = org.graalvm.compiler.core.common.FieldsScanner$CalcOffset of org.graalvm.compiler.core.common.FieldsScanner
  public DefaultCalcOffset = org.graalvm.compiler.core.common.FieldsScanner$DefaultCalcOffset of org.graalvm.compiler.core.common.FieldsScanner
  public FieldInfo = org.graalvm.compiler.core.common.FieldsScanner$FieldInfo of org.graalvm.compiler.core.common.FieldsScanner