public final class com.oracle.svm.core.genscavenge.HeapVerifier
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.core.genscavenge.HeapVerifier
  super_class: java.lang.Object
{
  private final com.oracle.svm.core.genscavenge.SpaceVerifier spaceVerifier;
    descriptor: Lcom/oracle/svm/core/genscavenge/SpaceVerifier;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectVisitor referenceToYoungObjectVisitor;
    descriptor: Lcom/oracle/svm/core/genscavenge/CardTable$ReferenceToYoungObjectVisitor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier imageHeapRegionVerifier;
    descriptor: Lcom/oracle/svm/core/genscavenge/HeapVerifier$ImageHeapRegionVerifier;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.svm.core.log.Log witnessLog;
    descriptor: Lcom/oracle/svm/core/log/Log;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String currentCause;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private static final com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesOutsideHeapVisitor noReferencesOutsideHeapVisitor;
    descriptor: Lcom/oracle/svm/core/genscavenge/HeapVerifier$NoReferencesOutsideHeapVisitor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesToForwardedObjectsVisitor noReferencesToForwardedObjectsVisitor;
    descriptor: Lcom/oracle/svm/core/genscavenge/HeapVerifier$NoReferencesToForwardedObjectsVisitor;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 352
            new com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesOutsideHeapVisitor
            dup
            invokespecial com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesOutsideHeapVisitor.<init>:()V
            putstatic com.oracle.svm.core.genscavenge.HeapVerifier.noReferencesOutsideHeapVisitor:Lcom/oracle/svm/core/genscavenge/HeapVerifier$NoReferencesOutsideHeapVisitor;
         1: .line 395
            new com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesToForwardedObjectsVisitor
            dup
            invokespecial com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesToForwardedObjectsVisitor.<init>:()V
            putstatic com.oracle.svm.core.genscavenge.HeapVerifier.noReferencesToForwardedObjectsVisitor:Lcom/oracle/svm/core/genscavenge/HeapVerifier$NoReferencesToForwardedObjectsVisitor;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
         0: .line 61
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 54
            aload 0 /* this */
            new com.oracle.svm.core.genscavenge.SpaceVerifier
            dup
            invokespecial com.oracle.svm.core.genscavenge.SpaceVerifier.<init>:()V
            putfield com.oracle.svm.core.genscavenge.HeapVerifier.spaceVerifier:Lcom/oracle/svm/core/genscavenge/SpaceVerifier;
         2: .line 55
            aload 0 /* this */
            new com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectVisitor
            dup
            new com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectReferenceVisitor
            dup
            invokespecial com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectReferenceVisitor.<init>:()V
            invokespecial com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectVisitor.<init>:(Lcom/oracle/svm/core/genscavenge/CardTable$ReferenceToYoungObjectReferenceVisitor;)V
            putfield com.oracle.svm.core.genscavenge.HeapVerifier.referenceToYoungObjectVisitor:Lcom/oracle/svm/core/genscavenge/CardTable$ReferenceToYoungObjectVisitor;
         3: .line 56
            aload 0 /* this */
            new com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier
            dup
            aload 0 /* this */
            invokespecial com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier.<init>:(Lcom/oracle/svm/core/genscavenge/HeapVerifier;)V
            putfield com.oracle.svm.core.genscavenge.HeapVerifier.imageHeapRegionVerifier:Lcom/oracle/svm/core/genscavenge/HeapVerifier$ImageHeapRegionVerifier;
         4: .line 57
            aload 0 /* this */
            invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
            putfield com.oracle.svm.core.genscavenge.HeapVerifier.witnessLog:Lcom/oracle/svm/core/log/Log;
         5: .line 59
            aload 0 /* this */
            ldc "Too soon to tell"
            putfield com.oracle.svm.core.genscavenge.HeapVerifier.currentCause:Ljava/lang/String;
         6: .line 62
            return
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;

  public java.lang.String getCurrentCause();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
         0: .line 65
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.currentCause:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;

  private void setCurrentCause(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
        start local 1 // java.lang.String cause
         0: .line 69
            aload 0 /* this */
            aload 1 /* cause */
            putfield com.oracle.svm.core.genscavenge.HeapVerifier.currentCause:Ljava/lang/String;
         1: .line 70
            return
        end local 1 // java.lang.String cause
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            0    2     1  cause  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      cause  

  boolean verifyObjectAt(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=10, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
        start local 1 // org.graalvm.word.Pointer ptr
         0: .line 73
            ldc "Can only verify from a VMOperation."
            invokestatic com.oracle.svm.core.thread.VMOperation.guaranteeInProgress:(Ljava/lang/String;)V
         1: .line 74
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
            astore 2 /* trace */
        start local 2 // com.oracle.svm.core.log.Log trace
         2: .line 75
            aload 2 /* trace */
            ldc "[HeapVerifier.verifyObjectAt:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  ptr: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 77
            aload 1 /* ptr */
            invokeinterface org.graalvm.word.Pointer.isNull:()Z
            ifeq 6
         4: .line 78
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  null ptr"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         5: .line 79
            iconst_0
            ireturn
         6: .line 81
      StackMap locals: com.oracle.svm.core.log.Log
      StackMap stack:
            aload 1 /* ptr */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.slowlyFindPointer:(Lorg/graalvm/word/Pointer;)Z
            ifne 9
         7: .line 82
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verifyObjectAt:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  ptr: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  is not in heap."
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         8: .line 83
            iconst_0
            ireturn
         9: .line 85
      StackMap locals:
      StackMap stack:
            aload 1 /* ptr */
            invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.readHeaderFromPointerCarefully:(Lorg/graalvm/word/Pointer;)Lorg/graalvm/word/UnsignedWord;
            astore 3 /* header */
        start local 3 // org.graalvm.word.UnsignedWord header
        10: .line 86
            aload 2 /* trace */
            ldc "  header: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 3 /* header */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
        11: .line 87
            aload 3 /* header */
            invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.isForwardedHeader:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 18
        12: .line 88
            aload 1 /* ptr */
            invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.getForwardedObject:(Lorg/graalvm/word/Pointer;)Ljava/lang/Object;
            astore 4 /* obj */
        start local 4 // java.lang.Object obj
        13: .line 89
            aload 4 /* obj */
            invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 5 /* op */
        start local 5 // org.graalvm.word.Pointer op
        14: .line 90
            aload 2 /* trace */
            ldc "  forwards to "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 5 /* op */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        15: .line 91
            aload 0 /* this */
            aload 5 /* op */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.verifyObjectAt:(Lorg/graalvm/word/Pointer;)Z
            ifne 47
        16: .line 92
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  forwarded object fails to verify"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        17: .line 93
            iconst_0
            ireturn
        end local 5 // org.graalvm.word.Pointer op
        end local 4 // java.lang.Object obj
        18: .line 96
      StackMap locals: org.graalvm.word.UnsignedWord
      StackMap stack:
            aload 1 /* ptr */
            invokeinterface org.graalvm.word.Pointer.toObject:()Ljava/lang/Object;
            astore 4 /* obj */
        start local 4 // java.lang.Object obj
        19: .line 97
            aload 2 /* trace */
            ldc "  obj: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* obj */
            invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "  obj.getClass: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
        20: .line 98
            aload 4 /* obj */
            invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.readDynamicHubFromObjectCarefully:(Ljava/lang/Object;)Lcom/oracle/svm/core/hub/DynamicHub;
            astore 5 /* hub */
        start local 5 // com.oracle.svm.core.hub.DynamicHub hub
        21: .line 99
            aload 5 /* hub */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "java.lang.Class"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 24
        22: .line 100
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  hub is not a class"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        23: .line 101
            iconst_0
            ireturn
        24: .line 103
      StackMap locals: java.lang.Object com.oracle.svm.core.hub.DynamicHub
      StackMap stack:
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            astore 6 /* heap */
        start local 6 // com.oracle.svm.core.genscavenge.HeapImpl heap
        25: .line 104
            aload 6 /* heap */
            aload 4 /* obj */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.isInImageHeap:(Ljava/lang/Object;)Z
            aload 6 /* heap */
            aload 4 /* obj */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.isInImageHeapSlow:(Ljava/lang/Object;)Z
            if_icmpeq 37
        26: .line 105
            aconst_null
            astore 7
            aconst_null
            astore 8
        27: aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            astore 9 /* witness */
        start local 9 // com.oracle.svm.core.log.Log witness
        28: .line 106
            aload 9 /* witness */
            ldc "[HeapVerifier.verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  obj: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* obj */
            invokevirtual com.oracle.svm.core.log.Log.object:(Ljava/lang/Object;)Lcom/oracle/svm/core/log/Log;
            pop
        29: .line 107
            aload 9 /* witness */
            ldc "  mismatch between isInImageHeap() and isInImageHeapSlow()"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        30: .line 108
            aload 9 /* witness */
            ifnull 36
            aload 9 /* witness */
            invokevirtual com.oracle.svm.core.log.Log.close:()V
            goto 36
      StackMap locals: com.oracle.svm.core.genscavenge.HeapVerifier org.graalvm.word.Pointer com.oracle.svm.core.log.Log org.graalvm.word.UnsignedWord java.lang.Object com.oracle.svm.core.hub.DynamicHub com.oracle.svm.core.genscavenge.HeapImpl java.lang.Throwable java.lang.Throwable com.oracle.svm.core.log.Log
      StackMap stack: java.lang.Throwable
        31: astore 7
            aload 9 /* witness */
            ifnull 32
            aload 9 /* witness */
            invokevirtual com.oracle.svm.core.log.Log.close:()V
        end local 9 // com.oracle.svm.core.log.Log witness
      StackMap locals:
      StackMap stack:
        32: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: astore 8
            aload 7
            ifnonnull 34
            aload 8
            astore 7
            goto 35
      StackMap locals:
      StackMap stack:
        34: aload 7
            aload 8
            if_acmpeq 35
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        35: aload 7
            athrow
        36: .line 109
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        37: .line 111
      StackMap locals:
      StackMap stack:
            aload 2 /* trace */
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        38: .line 116
            aload 0 /* this */
            aload 4 /* obj */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.noReferencesOutsideHeap:(Ljava/lang/Object;)Z
            ifne 41
        39: .line 117
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  contains references outside the heap"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        40: .line 118
            iconst_0
            ireturn
        41: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* obj */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.noReferencesToForwardedObjectsVerifier:(Ljava/lang/Object;)Z
            ifne 44
        42: .line 122
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  contains references to forwarded objects"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        43: .line 123
            iconst_0
            ireturn
        44: .line 125
      StackMap locals:
      StackMap stack:
            aload 4 /* obj */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.verifyReferenceObject:(Ljava/lang/Object;)Z
            ifne 47
        45: .line 126
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verifyObjectAt(objRef: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* ptr */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc ")"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  Reference object fails to verify."
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        46: .line 127
            iconst_0
            ireturn
        end local 6 // com.oracle.svm.core.genscavenge.HeapImpl heap
        end local 5 // com.oracle.svm.core.hub.DynamicHub hub
        end local 4 // java.lang.Object obj
        47: .line 130
      StackMap locals:
      StackMap stack:
            aload 2 /* trace */
            ldc "  returns true]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        48: .line 131
            iconst_1
            ireturn
        end local 3 // org.graalvm.word.UnsignedWord header
        end local 2 // com.oracle.svm.core.log.Log trace
        end local 1 // org.graalvm.word.Pointer ptr
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   49     0     this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            0   49     1      ptr  Lorg/graalvm/word/Pointer;
            2   49     2    trace  Lcom/oracle/svm/core/log/Log;
           10   49     3   header  Lorg/graalvm/word/UnsignedWord;
           13   18     4      obj  Ljava/lang/Object;
           14   18     5       op  Lorg/graalvm/word/Pointer;
           19   47     4      obj  Ljava/lang/Object;
           21   47     5      hub  Lcom/oracle/svm/core/hub/DynamicHub;
           25   47     6     heap  Lcom/oracle/svm/core/genscavenge/HeapImpl;
           28   32     9  witness  Lcom/oracle/svm/core/log/Log;
      Exception table:
        from    to  target  type
          28    30      31  any
          27    33      33  any
    MethodParameters:
      Name  Flags
      ptr   

  public boolean verify(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
        start local 1 // java.lang.String cause
         0: .line 165
            new com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation
            dup
            aload 1 /* cause */
            aload 0 /* this */
            getstatic com.oracle.svm.core.genscavenge.HeapVerifier$Occasion.BEFORE_COLLECTION:Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;
            invokespecial com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation.<init>:(Ljava/lang/String;Lcom/oracle/svm/core/genscavenge/HeapVerifier;Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)V
            astore 2 /* op */
        start local 2 // com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation op
         1: .line 166
            aload 2 /* op */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation.enqueue:()V
         2: .line 167
            aload 2 /* op */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation.getResult:()Z
            ireturn
        end local 2 // com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation op
        end local 1 // java.lang.String cause
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            0    3     1  cause  Ljava/lang/String;
            1    3     2     op  Lcom/oracle/svm/core/genscavenge/HeapVerifier$VerifyVMOperation;
    MethodParameters:
       Name  Flags
      cause  

  boolean verifyOperation(java.lang.String, com.oracle.svm.core.genscavenge.HeapVerifier$Occasion);
    descriptor: (Ljava/lang/String;Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
        start local 1 // java.lang.String cause
        start local 2 // com.oracle.svm.core.genscavenge.HeapVerifier$Occasion occasion
         0: .line 171
            ldc "Can only verify from a VMOperation."
            invokestatic com.oracle.svm.core.thread.VMOperation.guaranteeInProgress:(Ljava/lang/String;)V
         1: .line 172
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
            astore 3 /* trace */
        start local 3 // com.oracle.svm.core.log.Log trace
         2: .line 173
            aload 3 /* trace */
            ldc "[HeapVerifier.verify "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc " occasion: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 2 /* occasion */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier$Occasion.name:()Ljava/lang/String;
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc " cause: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* cause */
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc ":"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 174
            aload 3 /* trace */
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         4: .line 176
            aload 0 /* this */
            aload 1 /* cause */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.setCurrentCause:(Ljava/lang/String;)V
         5: .line 177
            invokestatic com.oracle.svm.core.genscavenge.ThreadLocalAllocation.disableAndFlushForAllThreads:()V
         6: .line 178
            iconst_1
            istore 4 /* result */
        start local 4 // boolean result
         7: .line 179
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.verifyImageHeapObjects:()Z
            ifne 10
         8: .line 180
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verify:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  native image fails to verify"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         9: .line 181
            iconst_0
            istore 4 /* result */
        10: .line 183
      StackMap locals: com.oracle.svm.core.log.Log int
      StackMap stack:
            aload 2 /* occasion */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.verifyYoungGeneration:(Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
            ifne 13
        11: .line 184
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verify:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  young generation fails to verify"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        12: .line 185
            iconst_0
            istore 4 /* result */
        13: .line 187
      StackMap locals:
      StackMap stack:
            aload 2 /* occasion */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.verifyOldGeneration:(Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
            ifne 16
        14: .line 188
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.verify:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  old generation fails to verify"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        15: .line 189
            iconst_0
            istore 4 /* result */
        16: .line 191
      StackMap locals:
      StackMap stack:
            aload 3 /* trace */
            ldc "  returns: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            iload 4 /* result */
            invokevirtual com.oracle.svm.core.log.Log.bool:(Z)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        17: .line 192
            iload 4 /* result */
            ifne 19
            getstatic com.oracle.svm.core.genscavenge.HeapOptions.HeapVerificationFailureIsFatal:Lcom/oracle/svm/core/option/RuntimeOptionKey;
            invokevirtual com.oracle.svm.core.option.RuntimeOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 19
        18: .line 193
            invokestatic com.oracle.svm.core.genscavenge.HeapVerificationError.throwError:()V
        19: .line 195
      StackMap locals:
      StackMap stack:
            iload 4 /* result */
            ireturn
        end local 4 // boolean result
        end local 3 // com.oracle.svm.core.log.Log trace
        end local 2 // com.oracle.svm.core.genscavenge.HeapVerifier$Occasion occasion
        end local 1 // java.lang.String cause
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            0   20     1     cause  Ljava/lang/String;
            0   20     2  occasion  Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;
            2   20     3     trace  Lcom/oracle/svm/core/log/Log;
            7   20     4    result  Z
    MethodParameters:
          Name  Flags
      cause     
      occasion  

  static void verifyDirtyCard(boolean);
    descriptor: (Z)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // boolean inToSpace
         0: .line 199
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getOldGeneration:()Lcom/oracle/svm/core/genscavenge/OldGeneration;
            astore 1 /* oldGen */
        start local 1 // com.oracle.svm.core.genscavenge.OldGeneration oldGen
         1: .line 200
            aload 1 /* oldGen */
            iload 0 /* inToSpace */
            invokevirtual com.oracle.svm.core.genscavenge.OldGeneration.verifyDirtyCards:(Z)V
         2: .line 201
            return
        end local 1 // com.oracle.svm.core.genscavenge.OldGeneration oldGen
        end local 0 // boolean inToSpace
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0  inToSpace  Z
            1    3     1     oldGen  Lcom/oracle/svm/core/genscavenge/OldGeneration;
    MethodParameters:
           Name  Flags
      inToSpace  

  static com.oracle.svm.core.log.Log getTraceLog();
    descriptor: ()Lcom/oracle/svm/core/log/Log;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 204
            getstatic com.oracle.svm.core.genscavenge.HeapOptions.TraceHeapVerification:Lcom/oracle/svm/core/option/HostedOptionKey;
            invokevirtual com.oracle.svm.core.option.HostedOptionKey.getValue:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 1
            invokestatic com.oracle.svm.core.log.Log.log:()Lcom/oracle/svm/core/log/Log;
            goto 2
      StackMap locals:
      StackMap stack:
         1: invokestatic com.oracle.svm.core.log.Log.noopLog:()Lcom/oracle/svm/core/log/Log;
      StackMap locals:
      StackMap stack: com.oracle.svm.core.log.Log
         2: areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  com.oracle.svm.core.log.Log getWitnessLog();
    descriptor: ()Lcom/oracle/svm/core/log/Log;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
         0: .line 208
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.witnessLog:Lcom/oracle/svm/core/log/Log;
            areturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;

  private boolean verifyImageHeapObjects();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
         0: .line 212
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.imageHeapRegionVerifier:Lcom/oracle/svm/core/genscavenge/HeapVerifier$ImageHeapRegionVerifier;
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier.reset:()V
         1: .line 213
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getImageHeapInfo:()Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.imageHeapRegionVerifier:Lcom/oracle/svm/core/genscavenge/HeapVerifier$ImageHeapRegionVerifier;
            invokestatic com.oracle.svm.core.genscavenge.ImageHeapWalker.walkRegions:(Lcom/oracle/svm/core/genscavenge/ImageHeapInfo;Lcom/oracle/svm/core/MemoryWalker$ImageHeapRegionVisitor;)Z
            pop
         2: .line 214
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.imageHeapRegionVerifier:Lcom/oracle/svm/core/genscavenge/HeapVerifier$ImageHeapRegionVerifier;
            getfield com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier.verifyResult:Z
            ireturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;

  private static boolean verifyYoungGeneration(com.oracle.svm.core.genscavenge.HeapVerifier$Occasion);
    descriptor: (Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier$Occasion occasion
         0: .line 273
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getYoungGeneration:()Lcom/oracle/svm/core/genscavenge/YoungGeneration;
            astore 1 /* youngGeneration */
        start local 1 // com.oracle.svm.core.genscavenge.Generation youngGeneration
         1: .line 274
            aload 1 /* youngGeneration */
            aload 0 /* occasion */
            invokevirtual com.oracle.svm.core.genscavenge.Generation.verify:(Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
            ireturn
        end local 1 // com.oracle.svm.core.genscavenge.Generation youngGeneration
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier$Occasion occasion
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0         occasion  Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;
            1    2     1  youngGeneration  Lcom/oracle/svm/core/genscavenge/Generation;
    MethodParameters:
          Name  Flags
      occasion  

  private static boolean verifyOldGeneration(com.oracle.svm.core.genscavenge.HeapVerifier$Occasion);
    descriptor: (Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier$Occasion occasion
         0: .line 278
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getOldGeneration:()Lcom/oracle/svm/core/genscavenge/OldGeneration;
            astore 1 /* oldGeneration */
        start local 1 // com.oracle.svm.core.genscavenge.OldGeneration oldGeneration
         1: .line 279
            aload 1 /* oldGeneration */
            aload 0 /* occasion */
            invokevirtual com.oracle.svm.core.genscavenge.OldGeneration.verify:(Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;)Z
            ireturn
        end local 1 // com.oracle.svm.core.genscavenge.OldGeneration oldGeneration
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier$Occasion occasion
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0       occasion  Lcom/oracle/svm/core/genscavenge/HeapVerifier$Occasion;
            1    2     1  oldGeneration  Lcom/oracle/svm/core/genscavenge/OldGeneration;
    MethodParameters:
          Name  Flags
      occasion  

  private boolean noReferencesOutsideHeap(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=9, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
        start local 1 // java.lang.Object obj
         0: .line 288
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
            astore 2 /* trace */
        start local 2 // com.oracle.svm.core.log.Log trace
         1: .line 289
            aload 2 /* trace */
            ldc "[HeapVerifier.noReferencesOutsideHeap:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
         2: .line 290
            aload 2 /* trace */
            ldc "  obj: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* obj */
            invokevirtual com.oracle.svm.core.log.Log.object:(Ljava/lang/Object;)Lcom/oracle/svm/core/log/Log;
            ldc "  obj.getClass: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 292
            aload 1 /* obj */
            invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.readHeaderFromObjectCarefully:(Ljava/lang/Object;)Lorg/graalvm/word/UnsignedWord;
            astore 3 /* header */
        start local 3 // org.graalvm.word.UnsignedWord header
         4: .line 293
            aload 2 /* trace */
            ldc "  header: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 3 /* header */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         5: .line 295
            aload 1 /* obj */
            invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 4 /* objPointer */
        start local 4 // org.graalvm.word.Pointer objPointer
         6: .line 296
            aload 2 /* trace */
            ldc "  objPointer: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* objPointer */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         7: .line 298
            aload 1 /* obj */
            getstatic com.oracle.svm.core.genscavenge.HeapVerifier.noReferencesOutsideHeapVisitor:Lcom/oracle/svm/core/genscavenge/HeapVerifier$NoReferencesOutsideHeapVisitor;
            invokestatic com.oracle.svm.core.hub.InteriorObjRefWalker.walkObject:(Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectReferenceVisitor;)Z
            istore 5 /* result */
        start local 5 // boolean result
         8: .line 299
            iload 5 /* result */
            ifne 20
         9: .line 300
            aconst_null
            astore 6
            aconst_null
            astore 7
        10: aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            astore 8 /* witness */
        start local 8 // com.oracle.svm.core.log.Log witness
        11: .line 301
            aload 8 /* witness */
            ldc "[HeapVerifier.noReferencesOutsideHeap:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  cause: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getCurrentCause:()Ljava/lang/String;
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
        12: .line 302
            aload 8 /* witness */
            ldc "  obj: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "@"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* objPointer */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
        13: .line 303
            aload 8 /* witness */
            ldc "  header: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 3 /* header */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        14: .line 304
            aload 8 /* witness */
            ifnull 20
            aload 8 /* witness */
            invokevirtual com.oracle.svm.core.log.Log.close:()V
            goto 20
      StackMap locals: com.oracle.svm.core.genscavenge.HeapVerifier java.lang.Object com.oracle.svm.core.log.Log org.graalvm.word.UnsignedWord org.graalvm.word.Pointer int java.lang.Throwable java.lang.Throwable com.oracle.svm.core.log.Log
      StackMap stack: java.lang.Throwable
        15: astore 6
            aload 8 /* witness */
            ifnull 16
            aload 8 /* witness */
            invokevirtual com.oracle.svm.core.log.Log.close:()V
        end local 8 // com.oracle.svm.core.log.Log witness
      StackMap locals:
      StackMap stack:
        16: aload 6
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 7
            aload 6
            ifnonnull 18
            aload 7
            astore 6
            goto 19
      StackMap locals:
      StackMap stack:
        18: aload 6
            aload 7
            if_acmpeq 19
            aload 6
            aload 7
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        19: aload 6
            athrow
        20: .line 307
      StackMap locals:
      StackMap stack:
            aload 2 /* trace */
            ldc "  returns: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            iload 5 /* result */
            invokevirtual com.oracle.svm.core.log.Log.bool:(Z)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        21: .line 308
            iload 5 /* result */
            ireturn
        end local 5 // boolean result
        end local 4 // org.graalvm.word.Pointer objPointer
        end local 3 // org.graalvm.word.UnsignedWord header
        end local 2 // com.oracle.svm.core.log.Log trace
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            0   22     1         obj  Ljava/lang/Object;
            1   22     2       trace  Lcom/oracle/svm/core/log/Log;
            4   22     3      header  Lorg/graalvm/word/UnsignedWord;
            6   22     4  objPointer  Lorg/graalvm/word/Pointer;
            8   22     5      result  Z
           11   16     8     witness  Lcom/oracle/svm/core/log/Log;
      Exception table:
        from    to  target  type
          11    14      15  any
          10    17      17  any
    MethodParameters:
      Name  Flags
      obj   

  private boolean noReferencesToForwardedObjectsVerifier(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=9, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
        start local 1 // java.lang.Object obj
         0: .line 355
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.getTraceLog:()Lcom/oracle/svm/core/log/Log;
            astore 2 /* trace */
        start local 2 // com.oracle.svm.core.log.Log trace
         1: .line 356
            aload 2 /* trace */
            ldc "[HeapVerifier.noReferencesToForwardedObjectsVerifier:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            pop
         2: .line 357
            aload 2 /* trace */
            ldc "  obj: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* obj */
            invokevirtual com.oracle.svm.core.log.Log.object:(Ljava/lang/Object;)Lcom/oracle/svm/core/log/Log;
            pop
         3: .line 358
            aload 1 /* obj */
            invokestatic com.oracle.svm.core.genscavenge.ObjectHeaderImpl.readHeaderFromObjectCarefully:(Ljava/lang/Object;)Lorg/graalvm/word/UnsignedWord;
            astore 3 /* header */
        start local 3 // org.graalvm.word.UnsignedWord header
         4: .line 359
            aload 2 /* trace */
            ldc "  header: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 3 /* header */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         5: .line 361
            aload 1 /* obj */
            invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            astore 4 /* objPointer */
        start local 4 // org.graalvm.word.Pointer objPointer
         6: .line 362
            aload 2 /* trace */
            ldc "  objPointer: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 4 /* objPointer */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            pop
         7: .line 364
            aload 1 /* obj */
            getstatic com.oracle.svm.core.genscavenge.HeapVerifier.noReferencesToForwardedObjectsVisitor:Lcom/oracle/svm/core/genscavenge/HeapVerifier$NoReferencesToForwardedObjectsVisitor;
            invokestatic com.oracle.svm.core.hub.InteriorObjRefWalker.walkObject:(Ljava/lang/Object;Lcom/oracle/svm/core/heap/ObjectReferenceVisitor;)Z
            istore 5 /* result */
        start local 5 // boolean result
         8: .line 365
            iload 5 /* result */
            ifne 18
         9: .line 366
            aconst_null
            astore 6
            aconst_null
            astore 7
        10: aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            astore 8 /* witness */
        start local 8 // com.oracle.svm.core.log.Log witness
        11: .line 367
            aload 8 /* witness */
            ldc "[HeapVerifier.noReferencesToForwardedObjectsVerifier:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  cause: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* this */
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getCurrentCause:()Ljava/lang/String;
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  obj: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 1 /* obj */
            invokevirtual com.oracle.svm.core.log.Log.object:(Ljava/lang/Object;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        12: .line 368
            aload 8 /* witness */
            ifnull 18
            aload 8 /* witness */
            invokevirtual com.oracle.svm.core.log.Log.close:()V
            goto 18
      StackMap locals: com.oracle.svm.core.genscavenge.HeapVerifier java.lang.Object com.oracle.svm.core.log.Log org.graalvm.word.UnsignedWord org.graalvm.word.Pointer int java.lang.Throwable java.lang.Throwable com.oracle.svm.core.log.Log
      StackMap stack: java.lang.Throwable
        13: astore 6
            aload 8 /* witness */
            ifnull 14
            aload 8 /* witness */
            invokevirtual com.oracle.svm.core.log.Log.close:()V
        end local 8 // com.oracle.svm.core.log.Log witness
      StackMap locals:
      StackMap stack:
        14: aload 6
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 7
            aload 6
            ifnonnull 16
            aload 7
            astore 6
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 6
            aload 7
            if_acmpeq 17
            aload 6
            aload 7
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 6
            athrow
        18: .line 371
      StackMap locals:
      StackMap stack:
            aload 2 /* trace */
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
        19: .line 372
            iload 5 /* result */
            ireturn
        end local 5 // boolean result
        end local 4 // org.graalvm.word.Pointer objPointer
        end local 3 // org.graalvm.word.UnsignedWord header
        end local 2 // com.oracle.svm.core.log.Log trace
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            0   20     1         obj  Ljava/lang/Object;
            1   20     2       trace  Lcom/oracle/svm/core/log/Log;
            4   20     3      header  Lorg/graalvm/word/UnsignedWord;
            6   20     4  objPointer  Lorg/graalvm/word/Pointer;
            8   20     5      result  Z
           11   14     8     witness  Lcom/oracle/svm/core/log/Log;
      Exception table:
        from    to  target  type
          11    12      13  any
          10    15      15  any
    MethodParameters:
      Name  Flags
      obj   

  private static boolean verifyReferenceObject(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Object object
         0: .line 398
            aload 0 /* object */
            ldc Ljava/lang/Object;
            invokestatic com.oracle.svm.core.snippets.KnownIntrinsics.convertUnknownValue:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            astore 1 /* obj */
        start local 1 // java.lang.Object obj
         1: .line 399
            aload 1 /* obj */
            instanceof java.lang.ref.Reference
            ifeq 3
         2: .line 400
            aload 1 /* obj */
            checkcast java.lang.ref.Reference
            invokestatic com.oracle.svm.core.genscavenge.ReferenceObjectProcessing.verify:(Ljava/lang/ref/Reference;)Z
            ireturn
         3: .line 402
      StackMap locals: java.lang.Object
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  object  Ljava/lang/Object;
            1    4     1     obj  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      object  

  static boolean slowlyFindPointer(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.word.Pointer p
         0: .line 406
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            astore 1 /* heap */
        start local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
         1: .line 407
            aload 1 /* heap */
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.isInImageHeapSlow:(Lorg/graalvm/word/Pointer;)Z
            ifne 2
            aload 0 /* p */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.slowlyFindPointerInYoungGeneration:(Lorg/graalvm/word/Pointer;)Z
            ifne 2
            aload 0 /* p */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.slowlyFindPointerInOldGeneration:(Lorg/graalvm/word/Pointer;)Z
            ifne 2
            iconst_0
            goto 3
      StackMap locals: com.oracle.svm.core.genscavenge.HeapImpl
      StackMap stack:
         2: iconst_1
      StackMap locals:
      StackMap stack: int
         3: istore 2 /* found */
        start local 2 // boolean found
         4: .line 408
            iload 2 /* found */
            ifne 6
         5: .line 409
            aload 1 /* heap */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getHeapVerifier:()Lcom/oracle/svm/core/genscavenge/HeapVerifier;
            invokevirtual com.oracle.svm.core.genscavenge.HeapVerifier.getWitnessLog:()Lcom/oracle/svm/core/log/Log;
            ldc "[HeapVerifier.slowlyFindPointer:"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            ldc "  did not find pointer in heap: "
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.log.Log.hex:(Lorg/graalvm/word/WordBase;)Lcom/oracle/svm/core/log/Log;
            ldc "]"
            invokevirtual com.oracle.svm.core.log.Log.string:(Ljava/lang/String;)Lcom/oracle/svm/core/log/Log;
            invokevirtual com.oracle.svm.core.log.Log.newline:()Lcom/oracle/svm/core/log/Log;
            pop
         6: .line 411
      StackMap locals: int
      StackMap stack:
            iload 2 /* found */
            ireturn
        end local 2 // boolean found
        end local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
        end local 0 // org.graalvm.word.Pointer p
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0      p  Lorg/graalvm/word/Pointer;
            1    7     1   heap  Lcom/oracle/svm/core/genscavenge/HeapImpl;
            4    7     2  found  Z
    MethodParameters:
      Name  Flags
      p     

  private static boolean slowlyFindPointerInYoungGeneration(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.word.Pointer p
         0: .line 415
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            astore 1 /* heap */
        start local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
         1: .line 416
            aload 1 /* heap */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getYoungGeneration:()Lcom/oracle/svm/core/genscavenge/YoungGeneration;
            astore 2 /* youngGen */
        start local 2 // com.oracle.svm.core.genscavenge.YoungGeneration youngGen
         2: .line 417
            aload 2 /* youngGen */
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.YoungGeneration.slowlyFindPointer:(Lorg/graalvm/word/Pointer;)Z
            ireturn
        end local 2 // com.oracle.svm.core.genscavenge.YoungGeneration youngGen
        end local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
        end local 0 // org.graalvm.word.Pointer p
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0         p  Lorg/graalvm/word/Pointer;
            1    3     1      heap  Lcom/oracle/svm/core/genscavenge/HeapImpl;
            2    3     2  youngGen  Lcom/oracle/svm/core/genscavenge/YoungGeneration;
    MethodParameters:
      Name  Flags
      p     

  private static boolean slowlyFindPointerInOldGeneration(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.word.Pointer p
         0: .line 421
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            astore 1 /* heap */
        start local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
         1: .line 422
            aload 1 /* heap */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getOldGeneration:()Lcom/oracle/svm/core/genscavenge/OldGeneration;
            astore 2 /* oldGen */
        start local 2 // com.oracle.svm.core.genscavenge.OldGeneration oldGen
         2: .line 423
            aload 2 /* oldGen */
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.OldGeneration.slowlyFindPointer:(Lorg/graalvm/word/Pointer;)Z
            ireturn
        end local 2 // com.oracle.svm.core.genscavenge.OldGeneration oldGen
        end local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
        end local 0 // org.graalvm.word.Pointer p
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0       p  Lorg/graalvm/word/Pointer;
            1    3     1    heap  Lcom/oracle/svm/core/genscavenge/HeapImpl;
            2    3     2  oldGen  Lcom/oracle/svm/core/genscavenge/OldGeneration;
    MethodParameters:
      Name  Flags
      p     

  private static boolean slowlyFindPointerInUnusedSpace(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.word.Pointer p
         0: .line 427
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getChunkProvider:()Lcom/oracle/svm/core/genscavenge/HeapChunkProvider;
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.HeapChunkProvider.slowlyFindPointer:(Lorg/graalvm/word/Pointer;)Z
            ireturn
        end local 0 // org.graalvm.word.Pointer p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     p  Lorg/graalvm/word/Pointer;
    MethodParameters:
      Name  Flags
      p     

  static boolean slowlyFindPointerInSpace(com.oracle.svm.core.genscavenge.Space, org.graalvm.word.Pointer);
    descriptor: (Lcom/oracle/svm/core/genscavenge/Space;Lorg/graalvm/word/Pointer;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.svm.core.genscavenge.Space space
        start local 1 // org.graalvm.word.Pointer p
         0: .line 431
            aload 0 /* space */
            invokevirtual com.oracle.svm.core.genscavenge.Space.getFirstAlignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            astore 2 /* aChunk */
        start local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader aChunk
         1: .line 432
            goto 6
         2: .line 433
      StackMap locals: com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
      StackMap stack:
            aload 2 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.AlignedHeapChunk.getObjectsStart:(Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;)Lorg/graalvm/word/Pointer;
            astore 3 /* start */
        start local 3 // org.graalvm.word.Pointer start
         3: .line 434
            aload 3 /* start */
            aload 1 /* p */
            invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 5
            aload 1 /* p */
            aload 2 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
            invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 5
         4: .line 435
            iconst_1
            ireturn
         5: .line 437
      StackMap locals: org.graalvm.word.Pointer
      StackMap stack:
            aload 2 /* aChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader
            astore 2 /* aChunk */
        end local 3 // org.graalvm.word.Pointer start
         6: .line 432
      StackMap locals:
      StackMap stack:
            aload 2 /* aChunk */
            invokeinterface com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader.isNonNull:()Z
            ifne 2
         7: .line 439
            aload 0 /* space */
            invokevirtual com.oracle.svm.core.genscavenge.Space.getFirstUnalignedHeapChunk:()Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
            astore 3 /* uChunk */
        start local 3 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader uChunk
         8: .line 440
            goto 13
         9: .line 441
      StackMap locals: com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
      StackMap stack:
            aload 3 /* uChunk */
            invokestatic com.oracle.svm.core.genscavenge.UnalignedHeapChunk.getObjectStart:(Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;)Lorg/graalvm/word/Pointer;
            astore 4 /* start */
        start local 4 // org.graalvm.word.Pointer start
        10: .line 442
            aload 4 /* start */
            aload 1 /* p */
            invokeinterface org.graalvm.word.Pointer.belowOrEqual:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 12
            aload 1 /* p */
            aload 3 /* uChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getTopPointer:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lorg/graalvm/word/Pointer;
            invokeinterface org.graalvm.word.Pointer.belowThan:(Lorg/graalvm/word/UnsignedWord;)Z
            ifeq 12
        11: .line 443
            iconst_1
            ireturn
        12: .line 445
      StackMap locals: org.graalvm.word.Pointer
      StackMap stack:
            aload 3 /* uChunk */
            invokestatic com.oracle.svm.core.genscavenge.HeapChunk.getNext:(Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;)Lcom/oracle/svm/core/genscavenge/HeapChunk$Header;
            checkcast com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader
            astore 3 /* uChunk */
        end local 4 // org.graalvm.word.Pointer start
        13: .line 440
      StackMap locals:
      StackMap stack:
            aload 3 /* uChunk */
            invokeinterface com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader.isNonNull:()Z
            ifne 9
        14: .line 447
            iconst_0
            ireturn
        end local 3 // com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader uChunk
        end local 2 // com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader aChunk
        end local 1 // org.graalvm.word.Pointer p
        end local 0 // com.oracle.svm.core.genscavenge.Space space
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0   space  Lcom/oracle/svm/core/genscavenge/Space;
            0   15     1       p  Lorg/graalvm/word/Pointer;
            1   15     2  aChunk  Lcom/oracle/svm/core/genscavenge/AlignedHeapChunk$AlignedHeader;
            3    6     3   start  Lorg/graalvm/word/Pointer;
            8   15     3  uChunk  Lcom/oracle/svm/core/genscavenge/UnalignedHeapChunk$UnalignedHeader;
           10   13     4   start  Lorg/graalvm/word/Pointer;
    MethodParameters:
       Name  Flags
      space  
      p      

  public static int classifyObject(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object o
         0: .line 451
            aload 0 /* o */
            invokestatic org.graalvm.compiler.word.Word.objectToUntrackedPointer:(Ljava/lang/Object;)Lorg/graalvm/compiler/word/Word;
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.classifyPointer:(Lorg/graalvm/word/Pointer;)I
            ireturn
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      o     

  static int classifyPointer(org.graalvm.word.Pointer);
    descriptor: (Lorg/graalvm/word/Pointer;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // org.graalvm.word.Pointer p
         0: .line 456
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            astore 1 /* heap */
        start local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
         1: .line 457
            aload 1 /* heap */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getYoungGeneration:()Lcom/oracle/svm/core/genscavenge/YoungGeneration;
            astore 2 /* youngGen */
        start local 2 // com.oracle.svm.core.genscavenge.YoungGeneration youngGen
         2: .line 458
            aload 1 /* heap */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.getOldGeneration:()Lcom/oracle/svm/core/genscavenge/OldGeneration;
            astore 3 /* oldGen */
        start local 3 // com.oracle.svm.core.genscavenge.OldGeneration oldGen
         3: .line 459
            aload 0 /* p */
            invokeinterface org.graalvm.word.Pointer.isNull:()Z
            ifeq 5
         4: .line 460
            iconst_0
            ireturn
         5: .line 462
      StackMap locals: com.oracle.svm.core.genscavenge.HeapImpl com.oracle.svm.core.genscavenge.YoungGeneration com.oracle.svm.core.genscavenge.OldGeneration
      StackMap stack:
            invokestatic com.oracle.svm.core.genscavenge.HeapImpl.getHeapImpl:()Lcom/oracle/svm/core/genscavenge/HeapImpl;
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.HeapImpl.isInImageHeapSlow:(Lorg/graalvm/word/Pointer;)Z
            ifeq 7
         6: .line 463
            iconst_1
            ireturn
         7: .line 465
      StackMap locals:
      StackMap stack:
            aload 2 /* youngGen */
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.YoungGeneration.slowlyFindPointer:(Lorg/graalvm/word/Pointer;)Z
            ifeq 9
         8: .line 466
            iconst_2
            ireturn
         9: .line 468
      StackMap locals:
      StackMap stack:
            aload 3 /* oldGen */
            aload 0 /* p */
            invokevirtual com.oracle.svm.core.genscavenge.OldGeneration.classifyPointer:(Lorg/graalvm/word/Pointer;)I
            istore 4 /* oldGenClassification */
        start local 4 // int oldGenClassification
        10: .line 469
            iload 4 /* oldGenClassification */
            ifle 12
        11: .line 470
            iconst_2
            iload 4 /* oldGenClassification */
            iadd
            ireturn
        12: .line 472
      StackMap locals: int
      StackMap stack:
            aload 0 /* p */
            invokestatic com.oracle.svm.core.genscavenge.HeapVerifier.slowlyFindPointerInUnusedSpace:(Lorg/graalvm/word/Pointer;)Z
            ifeq 14
        13: .line 473
            iconst_m1
            ireturn
        14: .line 475
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
        end local 4 // int oldGenClassification
        end local 3 // com.oracle.svm.core.genscavenge.OldGeneration oldGen
        end local 2 // com.oracle.svm.core.genscavenge.YoungGeneration youngGen
        end local 1 // com.oracle.svm.core.genscavenge.HeapImpl heap
        end local 0 // org.graalvm.word.Pointer p
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                     p  Lorg/graalvm/word/Pointer;
            1   15     1                  heap  Lcom/oracle/svm/core/genscavenge/HeapImpl;
            2   15     2              youngGen  Lcom/oracle/svm/core/genscavenge/YoungGeneration;
            3   15     3                oldGen  Lcom/oracle/svm/core/genscavenge/OldGeneration;
           10   15     4  oldGenClassification  I
    MethodParameters:
      Name  Flags
      p     

  com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectVisitor getReferenceToYoungObjectVisitor();
    descriptor: ()Lcom/oracle/svm/core/genscavenge/CardTable$ReferenceToYoungObjectVisitor;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
         0: .line 479
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.referenceToYoungObjectVisitor:Lcom/oracle/svm/core/genscavenge/CardTable$ReferenceToYoungObjectVisitor;
            areturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;

  com.oracle.svm.core.genscavenge.SpaceVerifier getSpaceVerifier();
    descriptor: ()Lcom/oracle/svm/core/genscavenge/SpaceVerifier;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
         0: .line 483
            aload 0 /* this */
            getfield com.oracle.svm.core.genscavenge.HeapVerifier.spaceVerifier:Lcom/oracle/svm/core/genscavenge/SpaceVerifier;
            areturn
        end local 0 // com.oracle.svm.core.genscavenge.HeapVerifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/svm/core/genscavenge/HeapVerifier;
}
SourceFile: "HeapVerifier.java"
NestMembers:
  com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapObjectVerifier  com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier  com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesOutsideHeapVisitor  com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesToForwardedObjectsVisitor  com.oracle.svm.core.genscavenge.HeapVerifier$Occasion  com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation
InnerClasses:
  public abstract ImageHeapRegionVisitor = com.oracle.svm.core.MemoryWalker$ImageHeapRegionVisitor of com.oracle.svm.core.MemoryWalker
  public abstract AlignedHeader = com.oracle.svm.core.genscavenge.AlignedHeapChunk$AlignedHeader of com.oracle.svm.core.genscavenge.AlignedHeapChunk
  ReferenceToYoungObjectReferenceVisitor = com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectReferenceVisitor of com.oracle.svm.core.genscavenge.CardTable
  ReferenceToYoungObjectVisitor = com.oracle.svm.core.genscavenge.CardTable$ReferenceToYoungObjectVisitor of com.oracle.svm.core.genscavenge.CardTable
  public abstract Header = com.oracle.svm.core.genscavenge.HeapChunk$Header of com.oracle.svm.core.genscavenge.HeapChunk
  ImageHeapObjectVerifier = com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapObjectVerifier of com.oracle.svm.core.genscavenge.HeapVerifier
  ImageHeapRegionVerifier = com.oracle.svm.core.genscavenge.HeapVerifier$ImageHeapRegionVerifier of com.oracle.svm.core.genscavenge.HeapVerifier
  private NoReferencesOutsideHeapVisitor = com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesOutsideHeapVisitor of com.oracle.svm.core.genscavenge.HeapVerifier
  private NoReferencesToForwardedObjectsVisitor = com.oracle.svm.core.genscavenge.HeapVerifier$NoReferencesToForwardedObjectsVisitor of com.oracle.svm.core.genscavenge.HeapVerifier
  public final Occasion = com.oracle.svm.core.genscavenge.HeapVerifier$Occasion of com.oracle.svm.core.genscavenge.HeapVerifier
  final VerifyVMOperation = com.oracle.svm.core.genscavenge.HeapVerifier$VerifyVMOperation of com.oracle.svm.core.genscavenge.HeapVerifier
  public abstract UnalignedHeader = com.oracle.svm.core.genscavenge.UnalignedHeapChunk$UnalignedHeader of com.oracle.svm.core.genscavenge.UnalignedHeapChunk