public final class com.oracle.svm.hosted.ExceptionSynthesizer
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.svm.hosted.ExceptionSynthesizer
  super_class: java.lang.Object
{
  private static final java.util.Map<com.oracle.svm.hosted.ExceptionSynthesizer$Key, java.lang.reflect.Method> exceptionMethods;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Lcom/oracle/svm/hosted/ExceptionSynthesizer$Key;Ljava/lang/reflect/Method;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 49
            ldc Lcom/oracle/svm/hosted/ExceptionSynthesizer;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.svm.hosted.ExceptionSynthesizer.$assertionsDisabled:Z
         3: .line 55
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic com.oracle.svm.hosted.ExceptionSynthesizer.exceptionMethods:Ljava/util/Map;
         4: .line 59
            ldc Ljava/lang/ClassNotFoundException;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
         5: .line 60
            ldc Ljava/lang/NoSuchFieldException;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
         6: .line 61
            ldc Ljava/lang/NoSuchMethodException;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
         7: .line 63
            ldc Ljava/lang/LinkageError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
         8: .line 64
            ldc Ljava/lang/ClassCircularityError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
         9: .line 65
            ldc Ljava/lang/IncompatibleClassChangeError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        10: .line 66
            ldc Ljava/lang/NoSuchFieldError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        11: .line 67
            ldc Ljava/lang/InstantiationError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        12: .line 68
            ldc Ljava/lang/NoSuchMethodError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        13: .line 69
            ldc Ljava/lang/IllegalAccessError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        14: .line 70
            ldc Ljava/lang/AbstractMethodError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        15: .line 71
            ldc Ljava/lang/BootstrapMethodError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        16: .line 72
            ldc Ljava/lang/ClassFormatError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        17: .line 73
            ldc Ljava/lang/reflect/GenericSignatureFormatError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        18: .line 74
            ldc Ljava/lang/UnsupportedClassVersionError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        19: .line 75
            ldc Ljava/lang/UnsatisfiedLinkError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        20: .line 76
            ldc Ljava/lang/NoClassDefFoundError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        21: .line 77
            ldc Ljava/lang/ExceptionInInitializerError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        22: .line 78
            ldc Ljava/lang/VerifyError;
            ldc Ljava/lang/String;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;Ljava/lang/Class;)V
        23: .line 79
            ldc Ljava/lang/VerifyError;
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.registerMethod:(Ljava/lang/Class;)V
        24: .line 80
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void registerMethod(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // java.lang.Class exceptionClass
         0: .line 84
            getstatic com.oracle.svm.hosted.ExceptionSynthesizer.exceptionMethods:Ljava/util/Map;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 0 /* exceptionClass */
            aastore
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer$Key.from:([Ljava/lang/Class;)Lcom/oracle/svm/hosted/ExceptionSynthesizer$Key;
            ldc Lcom/oracle/svm/core/snippets/ImplicitExceptions;
            new java.lang.StringBuilder
            dup
            ldc "throw"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* exceptionClass */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 85
            goto 4
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
         2: astore 1 /* ex */
        start local 1 // java.lang.NoSuchMethodException ex
         3: .line 86
            aload 1 /* ex */
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // java.lang.NoSuchMethodException ex
         4: .line 88
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Class exceptionClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  exceptionClass  Ljava/lang/Class<*>;
            3    4     1              ex  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
                Name  Flags
      exceptionClass  

  private static void registerMethod(java.lang.Class<?>, java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=3, args_size=2
        start local 0 // java.lang.Class exceptionClass
        start local 1 // java.lang.Class paramterClass
         0: .line 92
            getstatic com.oracle.svm.hosted.ExceptionSynthesizer.exceptionMethods:Ljava/util/Map;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 0 /* exceptionClass */
            aastore
            dup
            iconst_1
            aload 1 /* paramterClass */
            aastore
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer$Key.from:([Ljava/lang/Class;)Lcom/oracle/svm/hosted/ExceptionSynthesizer$Key;
            ldc Lcom/oracle/svm/core/snippets/ImplicitExceptions;
            new java.lang.StringBuilder
            dup
            ldc "throw"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* exceptionClass */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 1 /* paramterClass */
            aastore
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 93
            goto 4
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
         2: astore 2 /* ex */
        start local 2 // java.lang.NoSuchMethodException ex
         3: .line 94
            aload 2 /* ex */
            invokestatic com.oracle.svm.core.util.VMError.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.lang.NoSuchMethodException ex
         4: .line 96
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Class paramterClass
        end local 0 // java.lang.Class exceptionClass
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  exceptionClass  Ljava/lang/Class<*>;
            0    5     1   paramterClass  Ljava/lang/Class<*>;
            3    4     2              ex  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V
    MethodParameters:
                Name  Flags
      exceptionClass  
      paramterClass   

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.svm.hosted.ExceptionSynthesizer this
         0: .line 98
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 99
            return
        end local 0 // com.oracle.svm.hosted.ExceptionSynthesizer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/svm/hosted/ExceptionSynthesizer;

  public static java.lang.reflect.Method throwExceptionMethod(java.lang.Class<?>[]);
    descriptor: ([Ljava/lang/Class;)Ljava/lang/reflect/Method;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.lang.Class[] methodDescriptor
         0: .line 102
            getstatic com.oracle.svm.hosted.ExceptionSynthesizer.exceptionMethods:Ljava/util/Map;
            aload 0 /* methodDescriptor */
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer$Key.from:([Ljava/lang/Class;)Lcom/oracle/svm/hosted/ExceptionSynthesizer$Key;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 1 /* method */
        start local 1 // java.lang.reflect.Method method
         1: .line 103
            aload 1 /* method */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: new java.lang.StringBuilder
            dup
            ldc "Exception synthesizer method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* methodDescriptor */
            invokestatic java.util.Arrays.toString:([Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " not found."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         4: .line 104
            aload 1 /* method */
            areturn
        end local 1 // java.lang.reflect.Method method
        end local 0 // java.lang.Class[] methodDescriptor
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0  methodDescriptor  [Ljava/lang/Class;
            1    5     1            method  Ljava/lang/reflect/Method;
    Signature: ([Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
    MethodParameters:
                  Name  Flags
      methodDescriptor  

  public static void throwException(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, java.lang.Class<?>, java.lang.String);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljava/lang/Class;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        start local 1 // java.lang.Class exceptionClass
        start local 2 // java.lang.String message
         0: .line 109
            aload 0 /* b */
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            aload 1 /* exceptionClass */
            aastore
            dup
            iconst_1
            ldc Ljava/lang/String;
            aastore
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.throwExceptionMethod:([Ljava/lang/Class;)Ljava/lang/reflect/Method;
            aload 2 /* message */
            invokestatic com.oracle.svm.hosted.ExceptionSynthesizer.throwException:(Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljava/lang/reflect/Method;Ljava/lang/String;)V
         1: .line 110
            return
        end local 2 // java.lang.String message
        end local 1 // java.lang.Class exceptionClass
        end local 0 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0               b  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    2     1  exceptionClass  Ljava/lang/Class<*>;
            0    2     2         message  Ljava/lang/String;
    Signature: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljava/lang/Class<*>;Ljava/lang/String;)V
    MethodParameters:
                Name  Flags
      b               
      exceptionClass  
      message         

  public static void throwException(org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext, java.lang.reflect.Method, java.lang.String);
    descriptor: (Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;Ljava/lang/reflect/Method;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
        start local 1 // java.lang.reflect.Method throwExceptionMethod
        start local 2 // java.lang.String message
         0: .line 113
            aload 2 /* message */
            invokestatic com.oracle.svm.core.meta.SubstrateObjectConstant.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            aload 0 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 0 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getGraph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forConstant:(Ljdk/vm/ci/meta/JavaConstant;Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            astore 3 /* messageNode */
        start local 3 // org.graalvm.compiler.nodes.ValueNode messageNode
         1: .line 114
            aload 0 /* b */
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* throwExceptionMethod */
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 4 /* exceptionMethod */
        start local 4 // jdk.vm.ci.meta.ResolvedJavaMethod exceptionMethod
         2: .line 115
            getstatic com.oracle.svm.hosted.ExceptionSynthesizer.$assertionsDisabled:Z
            ifne 3
            aload 4 /* exceptionMethod */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.isStatic:()Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 116
      StackMap locals: org.graalvm.compiler.nodes.ValueNode jdk.vm.ci.meta.ResolvedJavaMethod
      StackMap stack:
            aload 0 /* b */
            getstatic org.graalvm.compiler.nodes.CallTargetNode$InvokeKind.Static:Lorg/graalvm/compiler/nodes/CallTargetNode$InvokeKind;
            aload 4 /* exceptionMethod */
            iconst_1
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 3 /* messageNode */
            aastore
            iconst_0
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.handleReplacedInvoke:(Lorg/graalvm/compiler/nodes/CallTargetNode$InvokeKind;Ljdk/vm/ci/meta/ResolvedJavaMethod;[Lorg/graalvm/compiler/nodes/ValueNode;Z)Lorg/graalvm/compiler/nodes/Invoke;
            astore 5 /* invoke */
        start local 5 // org.graalvm.compiler.nodes.Invoke invoke
         4: .line 117
            aload 5 /* invoke */
            ifnull 6
         5: .line 128
            aload 0 /* b */
            new org.graalvm.compiler.nodes.DeoptimizeNode
            dup
            getstatic jdk.vm.ci.meta.DeoptimizationAction.InvalidateReprofile:Ljdk/vm/ci/meta/DeoptimizationAction;
            getstatic jdk.vm.ci.meta.DeoptimizationReason.UnreachedCode:Ljdk/vm/ci/meta/DeoptimizationReason;
            invokespecial org.graalvm.compiler.nodes.DeoptimizeNode.<init>:(Ljdk/vm/ci/meta/DeoptimizationAction;Ljdk/vm/ci/meta/DeoptimizationReason;)V
            invokeinterface org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext.add:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            pop
         6: .line 130
      StackMap locals: org.graalvm.compiler.nodes.Invoke
      StackMap stack:
            return
        end local 5 // org.graalvm.compiler.nodes.Invoke invoke
        end local 4 // jdk.vm.ci.meta.ResolvedJavaMethod exceptionMethod
        end local 3 // org.graalvm.compiler.nodes.ValueNode messageNode
        end local 2 // java.lang.String message
        end local 1 // java.lang.reflect.Method throwExceptionMethod
        end local 0 // org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext b
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0                     b  Lorg/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderContext;
            0    7     1  throwExceptionMethod  Ljava/lang/reflect/Method;
            0    7     2               message  Ljava/lang/String;
            1    7     3           messageNode  Lorg/graalvm/compiler/nodes/ValueNode;
            2    7     4       exceptionMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            4    7     5                invoke  Lorg/graalvm/compiler/nodes/Invoke;
    MethodParameters:
                      Name  Flags
      b                     
      throwExceptionMethod  
      message               
}
SourceFile: "ExceptionSynthesizer.java"
NestMembers:
  com.oracle.svm.hosted.ExceptionSynthesizer$Key
InnerClasses:
  final Key = com.oracle.svm.hosted.ExceptionSynthesizer$Key of com.oracle.svm.hosted.ExceptionSynthesizer
  public final InvokeKind = org.graalvm.compiler.nodes.CallTargetNode$InvokeKind of org.graalvm.compiler.nodes.CallTargetNode