public class org.graalvm.compiler.api.test.Graal
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.api.test.Graal
  super_class: java.lang.Object
{
  private static final org.graalvm.compiler.api.runtime.GraalRuntime runtime;
    descriptor: Lorg/graalvm/compiler/api/runtime/GraalRuntime;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            invokestatic org.graalvm.compiler.api.test.Graal.initializeRuntime:()Lorg/graalvm/compiler/api/runtime/GraalRuntime;
            putstatic org.graalvm.compiler.api.test.Graal.runtime:Lorg/graalvm/compiler/api/runtime/GraalRuntime;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.api.test.Graal this
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.api.test.Graal this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/api/test/Graal;

  private static org.graalvm.compiler.api.runtime.GraalRuntime initializeRuntime();
    descriptor: ()Lorg/graalvm/compiler/api/runtime/GraalRuntime;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 43
            invokestatic jdk.vm.ci.services.Services.initializeJVMCI:()V
         1: .line 44
            invokestatic jdk.vm.ci.runtime.JVMCI.getRuntime:()Ljdk/vm/ci/runtime/JVMCIRuntime;
            invokeinterface jdk.vm.ci.runtime.JVMCIRuntime.getCompiler:()Ljdk/vm/ci/runtime/JVMCICompiler;
            astore 0 /* compiler */
        start local 0 // jdk.vm.ci.runtime.JVMCICompiler compiler
         2: .line 45
            aload 0 /* compiler */
            instanceof org.graalvm.compiler.api.runtime.GraalJVMCICompiler
            ifeq 5
         3: .line 46
            aload 0 /* compiler */
            checkcast org.graalvm.compiler.api.runtime.GraalJVMCICompiler
            astore 1 /* graal */
        start local 1 // org.graalvm.compiler.api.runtime.GraalJVMCICompiler graal
         4: .line 47
            aload 1 /* graal */
            invokeinterface org.graalvm.compiler.api.runtime.GraalJVMCICompiler.getGraalRuntime:()Lorg/graalvm/compiler/api/runtime/GraalRuntime;
            areturn
        end local 1 // org.graalvm.compiler.api.runtime.GraalJVMCICompiler graal
         5: .line 49
      StackMap locals: jdk.vm.ci.runtime.JVMCICompiler
      StackMap stack:
            new org.graalvm.compiler.api.test.Graal$InvalidGraalRuntime
            dup
            invokespecial org.graalvm.compiler.api.test.Graal$InvalidGraalRuntime.<init>:()V
            areturn
        end local 0 // jdk.vm.ci.runtime.JVMCICompiler compiler
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            2    6     0  compiler  Ljdk/vm/ci/runtime/JVMCICompiler;
            4    5     1     graal  Lorg/graalvm/compiler/api/runtime/GraalJVMCICompiler;

  public static org.graalvm.compiler.api.runtime.GraalRuntime getRuntime();
    descriptor: ()Lorg/graalvm/compiler/api/runtime/GraalRuntime;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 57
            getstatic org.graalvm.compiler.api.test.Graal.runtime:Lorg/graalvm/compiler/api/runtime/GraalRuntime;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static <T> T getRequiredCapability(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 66
            invokestatic org.graalvm.compiler.api.test.Graal.getRuntime:()Lorg/graalvm/compiler/api/runtime/GraalRuntime;
            aload 0 /* clazz */
            invokeinterface org.graalvm.compiler.api.runtime.GraalRuntime.getCapability:(Ljava/lang/Class;)Ljava/lang/Object;
            astore 1 /* t */
        start local 1 // java.lang.Object t
         1: .line 67
            aload 1 /* t */
            ifnonnull 12
         2: .line 68
            ldc "java.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* javaHome */
        start local 2 // java.lang.String javaHome
         3: .line 69
            ldc "java.vm.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* vmName */
        start local 3 // java.lang.String vmName
         4: .line 70
            new java.util.Formatter
            dup
            invokespecial java.util.Formatter.<init>:()V
            astore 4 /* errorMessage */
        start local 4 // java.util.Formatter errorMessage
         5: .line 71
            invokestatic org.graalvm.compiler.api.test.Graal.getRuntime:()Lorg/graalvm/compiler/api/runtime/GraalRuntime;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Lorg/graalvm/compiler/api/test/Graal$InvalidGraalRuntime;
            if_acmpne 8
         6: .line 72
            aload 4 /* errorMessage */
            ldc "The VM does not support the Graal API.%n"
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
         7: .line 73
            goto 9
         8: .line 74
      StackMap locals: java.lang.Class java.lang.Object java.lang.String java.lang.String java.util.Formatter
      StackMap stack:
            aload 4 /* errorMessage */
            ldc "The VM does not expose required Graal capability %s.%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
         9: .line 76
      StackMap locals:
      StackMap stack:
            aload 4 /* errorMessage */
            ldc "Currently used Java home directory is %s.%n"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* javaHome */
            aastore
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
        10: .line 77
            aload 4 /* errorMessage */
            ldc "Currently used VM configuration is: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* vmName */
            aastore
            invokevirtual java.util.Formatter.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
            pop
        11: .line 78
            new java.lang.UnsupportedOperationException
            dup
            aload 4 /* errorMessage */
            invokevirtual java.util.Formatter.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.util.Formatter errorMessage
        end local 3 // java.lang.String vmName
        end local 2 // java.lang.String javaHome
        12: .line 80
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            areturn
        end local 1 // java.lang.Object t
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0         clazz  Ljava/lang/Class<TT;>;
            1   13     1             t  TT;
            3   12     2      javaHome  Ljava/lang/String;
            4   12     3        vmName  Ljava/lang/String;
            5   12     4  errorMessage  Ljava/util/Formatter;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
       Name  Flags
      clazz  
}
SourceFile: "Graal.java"
NestMembers:
  org.graalvm.compiler.api.test.Graal$InvalidGraalRuntime
InnerClasses:
  private final InvalidGraalRuntime = org.graalvm.compiler.api.test.Graal$InvalidGraalRuntime of org.graalvm.compiler.api.test.Graal