public final class com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
  super_class: java.lang.Object
{
  private final java.util.Collection<com.oracle.svm.hosted.meta.HostedMethod> methodCollection;
    descriptor: Ljava/util/Collection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Collection<Lcom/oracle/svm/hosted/meta/HostedMethod;>;

  private final java.util.Set<java.lang.String> violations;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  public void <init>(java.util.Collection<com.oracle.svm.hosted.meta.HostedMethod>);
    descriptor: (Ljava/util/Collection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
        start local 1 // java.util.Collection methodCollection
         0: .line 55
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            aload 1 /* methodCollection */
            putfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
         2: .line 57
            aload 0 /* this */
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            putfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
         3: .line 58
            return
        end local 1 // java.util.Collection methodCollection
        end local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
            0    4     1  methodCollection  Ljava/util/Collection<Lcom/oracle/svm/hosted/meta/HostedMethod;>;
    Signature: (Ljava/util/Collection<Lcom/oracle/svm/hosted/meta/HostedMethod;>;)V
    MethodParameters:
                  Name  Flags
      methodCollection  

  public void check();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
         0: .line 62
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleOverrides:()V
         1: .line 63
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleCallees:()V
         2: .line 64
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleCallers:()V
         3: .line 65
            aload 0 /* this */
            invokevirtual com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.checkUninterruptibleAllocations:()V
         4: .line 67
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 11
         5: .line 68
            new java.lang.StringBuilder
            dup
            ldc "Found "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " violations of @Uninterruptible usage:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* message */
        start local 1 // java.lang.String message
         6: .line 69
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker java.lang.String top java.util.Iterator
      StackMap stack:
         7: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* violation */
        start local 2 // java.lang.String violation
         8: .line 70
            new java.lang.StringBuilder
            dup
            aload 1 /* message */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* violation */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* message */
        end local 2 // java.lang.String violation
         9: .line 69
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 72
            ldc "%s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* message */
            aastore
            invokestatic com.oracle.svm.core.util.UserError.abort:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/svm/core/util/UserError$UserException;
            athrow
        end local 1 // java.lang.String message
        11: .line 74
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
      StackMap stack:
            return
        end local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
            6   11     1    message  Ljava/lang/String;
            8    9     2  violation  Ljava/lang/String;

  private void checkUninterruptibleOverrides();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=1
        start local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
         0: .line 89
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 16
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 1 /* method */
        start local 1 // com.oracle.svm.hosted.meta.HostedMethod method
         2: .line 90
            aload 1 /* method */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 3 /* methodAnnotation */
        start local 3 // com.oracle.svm.core.annotate.Uninterruptible methodAnnotation
         3: .line 91
            aload 3 /* methodAnnotation */
            ifnull 16
         4: .line 92
            aload 1 /* method */
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getImplementations:()[Lcom/oracle/svm/hosted/meta/HostedMethod;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 15
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible top int int com.oracle.svm.hosted.meta.HostedMethod[]
      StackMap stack:
         5: aload 7
            iload 5
            aaload
            astore 4 /* impl */
        start local 4 // com.oracle.svm.hosted.meta.HostedMethod impl
         6: .line 93
            aload 4 /* impl */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 8 /* implAnnotation */
        start local 8 // com.oracle.svm.core.annotate.Uninterruptible implAnnotation
         7: .line 94
            aload 8 /* implAnnotation */
            ifnull 13
         8: .line 95
            aload 3 /* methodAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.callerMustBe:()Z
            aload 8 /* implAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.callerMustBe:()Z
            if_icmpeq 10
         9: .line 96
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            new java.lang.StringBuilder
            dup
            ldc "callerMustBe: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " != "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* impl */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        10: .line 98
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible com.oracle.svm.hosted.meta.HostedMethod int int com.oracle.svm.hosted.meta.HostedMethod[] com.oracle.svm.core.annotate.Uninterruptible
      StackMap stack:
            aload 3 /* methodAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
            aload 8 /* implAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
            if_icmpeq 14
        11: .line 99
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            new java.lang.StringBuilder
            dup
            ldc "calleeMustBe: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " != "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* impl */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 101
            goto 14
        13: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            new java.lang.StringBuilder
            dup
            ldc "method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is annotated but "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* impl */
            ldc "%H.%n(%p) is not"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // com.oracle.svm.core.annotate.Uninterruptible implAnnotation
        end local 4 // com.oracle.svm.hosted.meta.HostedMethod impl
        14: .line 92
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible top int int com.oracle.svm.hosted.meta.HostedMethod[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        15: iload 5
            iload 6
            if_icmplt 5
        end local 3 // com.oracle.svm.core.annotate.Uninterruptible methodAnnotation
        end local 1 // com.oracle.svm.hosted.meta.HostedMethod method
        16: .line 89
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        17: .line 107
            return
        end local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0              this  Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
            2   16     1            method  Lcom/oracle/svm/hosted/meta/HostedMethod;
            3   16     3  methodAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;
            6   14     4              impl  Lcom/oracle/svm/hosted/meta/HostedMethod;
            7   14     8    implAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;

  private void checkUninterruptibleCallees();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
         0: .line 119
            getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph: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 2
         1: .line 120
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "/* DOT */ digraph uninterruptible {"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 25
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
         3: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 1 /* caller */
        start local 1 // com.oracle.svm.hosted.meta.HostedMethod caller
         4: .line 123
            aload 1 /* caller */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 3 /* callerAnnotation */
        start local 3 // com.oracle.svm.core.annotate.Uninterruptible callerAnnotation
         5: .line 124
            aload 1 /* caller */
            getfield com.oracle.svm.hosted.meta.HostedMethod.compilationInfo:Lcom/oracle/svm/hosted/code/CompilationInfo;
            invokevirtual com.oracle.svm.hosted.code.CompilationInfo.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 4 /* graph */
        start local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
         6: .line 125
            aload 3 /* callerAnnotation */
            ifnull 25
         7: .line 126
            aload 3 /* callerAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
            ifeq 18
         8: .line 127
            aload 4 /* graph */
            ifnull 25
         9: .line 128
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 16
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
      StackMap stack:
        10: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.Invoke
            astore 5 /* invoke */
        start local 5 // org.graalvm.compiler.nodes.Invoke invoke
        11: .line 129
            aload 5 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
            invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 7 /* callee */
        start local 7 // com.oracle.svm.hosted.meta.HostedMethod callee
        12: .line 130
            getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph: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 14
        13: .line 131
            aload 1 /* caller */
            aload 7 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.printDotGraphEdge:(Lcom/oracle/svm/hosted/meta/HostedMethod;Lcom/oracle/svm/hosted/meta/HostedMethod;)V
        14: .line 133
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.Invoke java.util.Iterator com.oracle.svm.hosted.meta.HostedMethod
      StackMap stack:
            aload 7 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isNotInterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifne 16
        15: .line 134
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            new java.lang.StringBuilder
            dup
            ldc "Unannotated callee: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* callee */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " called by annotated caller "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* caller */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // com.oracle.svm.hosted.meta.HostedMethod callee
        end local 5 // org.graalvm.compiler.nodes.Invoke invoke
        16: .line 128
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        17: .line 138
            goto 25
        18: .line 140
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph
      StackMap stack:
            aload 4 /* graph */
            ifnull 25
        19: .line 141
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 24
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
      StackMap stack:
        20: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.Invoke
            astore 5 /* invoke */
        start local 5 // org.graalvm.compiler.nodes.Invoke invoke
        21: .line 142
            aload 5 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
            invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 7 /* callee */
        start local 7 // com.oracle.svm.hosted.meta.HostedMethod callee
        22: .line 143
            getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph: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 24
        23: .line 144
            aload 1 /* caller */
            aload 7 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.printDotGraphEdge:(Lcom/oracle/svm/hosted/meta/HostedMethod;Lcom/oracle/svm/hosted/meta/HostedMethod;)V
        end local 7 // com.oracle.svm.hosted.meta.HostedMethod callee
        end local 5 // org.graalvm.compiler.nodes.Invoke invoke
        24: .line 141
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        end local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 3 // com.oracle.svm.core.annotate.Uninterruptible callerAnnotation
        end local 1 // com.oracle.svm.hosted.meta.HostedMethod caller
        25: .line 122
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        26: .line 151
            getstatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options.PrintUninterruptibleCalleeDOTGraph: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 28
        27: .line 152
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "/* DOT */ }"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        28: .line 154
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
      StackMap stack:
            return
        end local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   29     0              this  Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
            4   25     1            caller  Lcom/oracle/svm/hosted/meta/HostedMethod;
            5   25     3  callerAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;
            6   25     4             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
           11   16     5            invoke  Lorg/graalvm/compiler/nodes/Invoke;
           12   16     7            callee  Lcom/oracle/svm/hosted/meta/HostedMethod;
           21   24     5            invoke  Lorg/graalvm/compiler/nodes/Invoke;
           22   24     7            callee  Lcom/oracle/svm/hosted/meta/HostedMethod;

  private void checkUninterruptibleCallers();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
         0: .line 162
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 11
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 1 /* caller */
        start local 1 // com.oracle.svm.hosted.meta.HostedMethod caller
         2: .line 163
            aload 1 /* caller */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 3 /* callerAnnotation */
        start local 3 // com.oracle.svm.core.annotate.Uninterruptible callerAnnotation
         3: .line 164
            aload 1 /* caller */
            getfield com.oracle.svm.hosted.meta.HostedMethod.compilationInfo:Lcom/oracle/svm/hosted/code/CompilationInfo;
            invokevirtual com.oracle.svm.hosted.code.CompilationInfo.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 4 /* graph */
        start local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
         4: .line 165
            aload 3 /* callerAnnotation */
            ifnonnull 11
            aload 4 /* graph */
            ifnull 11
         5: .line 166
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getInvokes:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 10
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
      StackMap stack:
         6: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.Invoke
            astore 5 /* invoke */
        start local 5 // org.graalvm.compiler.nodes.Invoke invoke
         7: .line 167
            aload 5 /* invoke */
            invokeinterface org.graalvm.compiler.nodes.Invoke.callTarget:()Lorg/graalvm/compiler/nodes/CallTargetNode;
            invokevirtual org.graalvm.compiler.nodes.CallTargetNode.targetMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 7 /* callee */
        start local 7 // com.oracle.svm.hosted.meta.HostedMethod callee
         8: .line 168
            aload 7 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isCallerMustBe:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifeq 10
         9: .line 169
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            new java.lang.StringBuilder
            dup
            ldc "Unannotated caller: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* caller */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " calls annotated callee "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* callee */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // com.oracle.svm.hosted.meta.HostedMethod callee
        end local 5 // org.graalvm.compiler.nodes.Invoke invoke
        10: .line 166
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 3 // com.oracle.svm.core.annotate.Uninterruptible callerAnnotation
        end local 1 // com.oracle.svm.hosted.meta.HostedMethod caller
        11: .line 162
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        12: .line 174
            return
        end local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
            2   11     1            caller  Lcom/oracle/svm/hosted/meta/HostedMethod;
            3   11     3  callerAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;
            4   11     4             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            7   10     5            invoke  Lorg/graalvm/compiler/nodes/Invoke;
            8   10     7            callee  Lcom/oracle/svm/hosted/meta/HostedMethod;

  private void checkUninterruptibleAllocations();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
         0: .line 182
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.methodCollection:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 10
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.svm.hosted.meta.HostedMethod
            astore 1 /* method */
        start local 1 // com.oracle.svm.hosted.meta.HostedMethod method
         2: .line 183
            aload 1 /* method */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 3 /* methodAnnotation */
        start local 3 // com.oracle.svm.core.annotate.Uninterruptible methodAnnotation
         3: .line 184
            aload 1 /* method */
            getfield com.oracle.svm.hosted.meta.HostedMethod.compilationInfo:Lcom/oracle/svm/hosted/code/CompilationInfo;
            invokevirtual com.oracle.svm.hosted.code.CompilationInfo.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 4 /* graph */
        start local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
         4: .line 185
            aload 3 /* methodAnnotation */
            ifnull 10
            aload 4 /* graph */
            ifnull 10
         5: .line 186
            aload 4 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getNodes:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 6
            goto 9
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker com.oracle.svm.hosted.meta.HostedMethod java.util.Iterator com.oracle.svm.core.annotate.Uninterruptible org.graalvm.compiler.nodes.StructuredGraph top java.util.Iterator
      StackMap stack:
         6: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.graph.Node
            astore 5 /* node */
        start local 5 // org.graalvm.compiler.graph.Node node
         7: .line 187
            aload 5 /* node */
            instanceof org.graalvm.compiler.nodes.java.AbstractNewObjectNode
            ifeq 9
         8: .line 188
            aload 0 /* this */
            getfield com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.violations:Ljava/util/Set;
            new java.lang.StringBuilder
            dup
            ldc "Annotated method: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* method */
            ldc "%H.%n(%p)"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " allocates."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.graalvm.compiler.graph.Node node
         9: .line 186
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 4 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 3 // com.oracle.svm.core.annotate.Uninterruptible methodAnnotation
        end local 1 // com.oracle.svm.hosted.meta.HostedMethod method
        10: .line 182
      StackMap locals: com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        11: .line 193
            return
        end local 0 // com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lcom/oracle/svm/hosted/code/UninterruptibleAnnotationChecker;
            2   10     1            method  Lcom/oracle/svm/hosted/meta/HostedMethod;
            3   10     3  methodAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;
            4   10     4             graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            7    9     5              node  Lorg/graalvm/compiler/graph/Node;

  private static boolean isNotInterruptible(com.oracle.svm.hosted.meta.HostedMethod);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.meta.HostedMethod method
         0: .line 196
            aload 0 /* method */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isUninterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifne 1
            aload 0 /* method */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isNoTransitionCFunction:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // com.oracle.svm.hosted.meta.HostedMethod method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  method  Lcom/oracle/svm/hosted/meta/HostedMethod;
    MethodParameters:
        Name  Flags
      method  

  private static boolean isUninterruptible(com.oracle.svm.hosted.meta.HostedMethod);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.meta.HostedMethod method
         0: .line 200
            aload 0 /* method */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.svm.hosted.meta.HostedMethod method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  method  Lcom/oracle/svm/hosted/meta/HostedMethod;
    MethodParameters:
        Name  Flags
      method  

  private static boolean isCallerMustBe(com.oracle.svm.hosted.meta.HostedMethod);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.hosted.meta.HostedMethod method
         0: .line 204
            aload 0 /* method */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 1 /* uninterruptibleAnnotation */
        start local 1 // com.oracle.svm.core.annotate.Uninterruptible uninterruptibleAnnotation
         1: .line 205
            aload 1 /* uninterruptibleAnnotation */
            ifnull 2
            aload 1 /* uninterruptibleAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.callerMustBe:()Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: com.oracle.svm.core.annotate.Uninterruptible
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // com.oracle.svm.core.annotate.Uninterruptible uninterruptibleAnnotation
        end local 0 // com.oracle.svm.hosted.meta.HostedMethod method
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    3     0                     method  Lcom/oracle/svm/hosted/meta/HostedMethod;
            1    3     1  uninterruptibleAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;
    MethodParameters:
        Name  Flags
      method  

  private static boolean isCalleeMustBe(com.oracle.svm.hosted.meta.HostedMethod);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.svm.hosted.meta.HostedMethod method
         0: .line 209
            aload 0 /* method */
            ldc Lcom/oracle/svm/core/annotate/Uninterruptible;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.svm.core.annotate.Uninterruptible
            astore 1 /* uninterruptibleAnnotation */
        start local 1 // com.oracle.svm.core.annotate.Uninterruptible uninterruptibleAnnotation
         1: .line 210
            aload 1 /* uninterruptibleAnnotation */
            ifnull 2
            aload 1 /* uninterruptibleAnnotation */
            invokeinterface com.oracle.svm.core.annotate.Uninterruptible.calleeMustBe:()Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: com.oracle.svm.core.annotate.Uninterruptible
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // com.oracle.svm.core.annotate.Uninterruptible uninterruptibleAnnotation
        end local 0 // com.oracle.svm.hosted.meta.HostedMethod method
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    3     0                     method  Lcom/oracle/svm/hosted/meta/HostedMethod;
            1    3     1  uninterruptibleAnnotation  Lcom/oracle/svm/core/annotate/Uninterruptible;
    MethodParameters:
        Name  Flags
      method  

  private static boolean isNoTransitionCFunction(com.oracle.svm.hosted.meta.HostedMethod);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.oracle.svm.hosted.meta.HostedMethod method
         0: .line 214
            aload 0 /* method */
            ldc Lorg/graalvm/nativeimage/c/function/CFunction;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.graalvm.nativeimage.c.function.CFunction
            astore 1 /* cfunctionAnnotation */
        start local 1 // org.graalvm.nativeimage.c.function.CFunction cfunctionAnnotation
         1: .line 215
            aload 0 /* method */
            ldc Lorg/graalvm/nativeimage/c/function/InvokeCFunctionPointer;
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.graalvm.nativeimage.c.function.InvokeCFunctionPointer
            astore 2 /* invokeCFunctionPointerAnnotation */
        start local 2 // org.graalvm.nativeimage.c.function.InvokeCFunctionPointer invokeCFunctionPointerAnnotation
         2: .line 216
            aload 1 /* cfunctionAnnotation */
            ifnull 3
            aload 1 /* cfunctionAnnotation */
            invokeinterface org.graalvm.nativeimage.c.function.CFunction.transition:()Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
            getstatic org.graalvm.nativeimage.c.function.CFunction$Transition.NO_TRANSITION:Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
            if_acmpeq 5
         3: .line 217
      StackMap locals: org.graalvm.nativeimage.c.function.CFunction org.graalvm.nativeimage.c.function.InvokeCFunctionPointer
      StackMap stack:
            aload 2 /* invokeCFunctionPointerAnnotation */
            ifnull 4
            aload 2 /* invokeCFunctionPointerAnnotation */
            invokeinterface org.graalvm.nativeimage.c.function.InvokeCFunctionPointer.transition:()Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
            getstatic org.graalvm.nativeimage.c.function.CFunction$Transition.NO_TRANSITION:Lorg/graalvm/nativeimage/c/function/CFunction$Transition;
            if_acmpeq 5
         4: .line 216
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 2 // org.graalvm.nativeimage.c.function.InvokeCFunctionPointer invokeCFunctionPointerAnnotation
        end local 1 // org.graalvm.nativeimage.c.function.CFunction cfunctionAnnotation
        end local 0 // com.oracle.svm.hosted.meta.HostedMethod method
      LocalVariableTable:
        Start  End  Slot                              Name  Signature
            0    6     0                            method  Lcom/oracle/svm/hosted/meta/HostedMethod;
            1    6     1               cfunctionAnnotation  Lorg/graalvm/nativeimage/c/function/CFunction;
            2    6     2  invokeCFunctionPointerAnnotation  Lorg/graalvm/nativeimage/c/function/InvokeCFunctionPointer;
    MethodParameters:
        Name  Flags
      method  

  private static void printDotGraphEdge(com.oracle.svm.hosted.meta.HostedMethod, com.oracle.svm.hosted.meta.HostedMethod);
    descriptor: (Lcom/oracle/svm/hosted/meta/HostedMethod;Lcom/oracle/svm/hosted/meta/HostedMethod;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.svm.hosted.meta.HostedMethod caller
        start local 1 // com.oracle.svm.hosted.meta.HostedMethod callee
         0: .line 222
            ldc " [color=black]"
            astore 2 /* callerColor */
        start local 2 // java.lang.String callerColor
         1: .line 223
            ldc " [color=black]"
            astore 3 /* calleeColor */
        start local 3 // java.lang.String calleeColor
         2: .line 224
            aload 0 /* caller */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isUninterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifeq 6
         3: .line 225
            ldc " [color=blue]"
            astore 2 /* callerColor */
         4: .line 226
            aload 0 /* caller */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isCalleeMustBe:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifne 6
         5: .line 227
            ldc " [color=orange]"
            astore 2 /* callerColor */
         6: .line 230
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 1 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isUninterruptible:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifeq 11
         7: .line 231
            ldc " [color=blue]"
            astore 3 /* calleeColor */
         8: .line 232
            aload 1 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isCalleeMustBe:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifne 12
         9: .line 233
            ldc " [color=purple]"
            astore 3 /* calleeColor */
        10: .line 235
            goto 12
        11: .line 236
      StackMap locals:
      StackMap stack:
            ldc " [color=red]"
            astore 3 /* calleeColor */
        12: .line 238
      StackMap locals:
      StackMap stack:
            aload 1 /* callee */
            invokestatic com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker.isNoTransitionCFunction:(Lcom/oracle/svm/hosted/meta/HostedMethod;)Z
            ifeq 14
        13: .line 239
            ldc " [color=green]"
            astore 3 /* calleeColor */
        14: .line 241
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "/* DOT */    "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* caller */
            ldc "<%h.%n>"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* callerColor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        15: .line 242
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "/* DOT */    "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* callee */
            ldc "<%h.%n>"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* calleeColor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        16: .line 243
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "/* DOT */    "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* caller */
            ldc "<%h.%n>"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " -> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* callee */
            ldc "<%h.%n>"
            invokevirtual com.oracle.svm.hosted.meta.HostedMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* calleeColor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        17: .line 244
            return
        end local 3 // java.lang.String calleeColor
        end local 2 // java.lang.String callerColor
        end local 1 // com.oracle.svm.hosted.meta.HostedMethod callee
        end local 0 // com.oracle.svm.hosted.meta.HostedMethod caller
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0       caller  Lcom/oracle/svm/hosted/meta/HostedMethod;
            0   18     1       callee  Lcom/oracle/svm/hosted/meta/HostedMethod;
            1   18     2  callerColor  Ljava/lang/String;
            2   18     3  calleeColor  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      caller  
      callee  
}
SourceFile: "UninterruptibleAnnotationChecker.java"
NestMembers:
  com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options
InnerClasses:
  public UserException = com.oracle.svm.core.util.UserError$UserException of com.oracle.svm.core.util.UserError
  public Options = com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker$Options of com.oracle.svm.hosted.code.UninterruptibleAnnotationChecker
  public final Transition = org.graalvm.nativeimage.c.function.CFunction$Transition of org.graalvm.nativeimage.c.function.CFunction