final class com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode extends com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode
  super_class: com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode
{
  private com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode block;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode catchBlock;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode finallyBlock;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.interop.InteropLibrary exceptions;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private final com.oracle.truffle.api.profiles.BranchProfile exceptionProfile;
    descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode, com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode, com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode);
    descriptor: (Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode this
        start local 1 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode block
        start local 2 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode catchBlock
        start local 3 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode finallyBlock
         0: .line 3819
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode.<init>:()V
         1: .line 3821
            aload 0 /* this */
            aload 1 /* block */
            putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.block:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
         2: .line 3822
            aload 0 /* this */
            aload 2 /* catchBlock */
            putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.catchBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
         3: .line 3823
            aload 0 /* this */
            aload 3 /* finallyBlock */
            putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.finallyBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
         4: .line 3824
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            iconst_5
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptions:Lcom/oracle/truffle/api/interop/InteropLibrary;
         5: .line 3825
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
            putfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptionProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
         6: .line 3826
            return
        end local 3 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode finallyBlock
        end local 2 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode catchBlock
        end local 1 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode block
        end local 0 // com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$TryCatchNode;
            0    7     1         block  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            0    7     2    catchBlock  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            0    7     3  finallyBlock  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
    MethodParameters:
              Name  Flags
      block         
      catchBlock    
      finallyBlock  

  void executeVoid(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 3830
            aconst_null
            astore 2 /* exception */
        start local 2 // java.lang.Throwable exception
         1: .line 3832
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.block:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
         2: .line 3833
            goto 5
      StackMap locals: com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode com.oracle.truffle.api.frame.VirtualFrame java.lang.Throwable
      StackMap stack: java.lang.Throwable
         3: astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
         4: .line 3834
            aload 0 /* this */
            aload 1 /* frame */
            aload 3 /* ex */
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.catchBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.executeCatchBlock:(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;
            astore 2 /* exception */
        end local 3 // java.lang.Throwable ex
         5: .line 3840
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.finallyBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            ifnull 7
         6: .line 3841
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.finallyBlock:Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
         7: .line 3843
      StackMap locals:
      StackMap stack:
            aload 2 /* exception */
            ifnull 13
         8: .line 3844
            aload 2 /* exception */
            instanceof com.oracle.truffle.api.nodes.ControlFlowException
            ifeq 10
         9: .line 3845
            aload 2 /* exception */
            checkcast com.oracle.truffle.api.nodes.ControlFlowException
            athrow
        10: .line 3848
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptions:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 2 /* exception */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.throwException:(Ljava/lang/Object;)Ljava/lang/RuntimeException;
            athrow
        11: .line 3849
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
            astore 3 /* ie */
        start local 3 // com.oracle.truffle.api.interop.UnsupportedMessageException ie
        12: .line 3850
            aload 3 /* ie */
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // com.oracle.truffle.api.interop.UnsupportedMessageException ie
        13: .line 3853
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable exception
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$TryCatchNode;
            0   14     1      frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1   14     2  exception  Ljava/lang/Throwable;
            4    5     3         ex  Ljava/lang/Throwable;
           12   13     3         ie  Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Throwable
          10    11      11  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    MethodParameters:
       Name  Flags
      frame  

  private <T extends java.lang.Throwable> java.lang.Throwable executeCatchBlock(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable, com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode) throws T;
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Throwable ex
        start local 3 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode catchBlk
         0: .line 3860
            aload 2 /* ex */
            instanceof com.oracle.truffle.api.nodes.ControlFlowException
            ifeq 2
         1: .line 3862
            aload 2 /* ex */
            areturn
         2: .line 3864
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptionProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         3: .line 3865
            aload 0 /* this */
            getfield com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.exceptions:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 2 /* ex */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isException:(Ljava/lang/Object;)Z
            ifeq 10
         4: .line 3866
            aload 3 /* catchBlk */
            ifnull 9
         5: .line 3868
            aload 3 /* catchBlk */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode.executeVoid:(Lcom/oracle/truffle/api/frame/VirtualFrame;)V
         6: .line 3869
            aconst_null
            areturn
         7: .line 3870
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* catchEx */
        start local 4 // java.lang.Throwable catchEx
         8: .line 3871
            aload 0 /* this */
            aload 1 /* frame */
            aload 4 /* catchEx */
            aconst_null
            invokevirtual com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode.executeCatchBlock:(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;
            areturn
        end local 4 // java.lang.Throwable catchEx
         9: .line 3875
      StackMap locals:
      StackMap stack:
            aload 2 /* ex */
            areturn
        10: .line 3879
      StackMap locals:
      StackMap stack:
            aload 2 /* ex */
            athrow
        end local 3 // com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode catchBlk
        end local 2 // java.lang.Throwable ex
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$TryCatchNode;
            0   11     1     frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   11     2        ex  Ljava/lang/Throwable;
            0   11     3  catchBlk  Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;
            8    9     4   catchEx  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.Throwable
    Exceptions:
      throws java.lang.Throwable
    Signature: <T:Ljava/lang/Throwable;>(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Lcom/oracle/truffle/api/interop/InteropLibrarySnippets$BlockNode;)Ljava/lang/Throwable;^TT;
    MethodParameters:
          Name  Flags
      frame     
      ex        
      catchBlk  
}
SourceFile: "InteropLibrary.java"
NestHost: com.oracle.truffle.api.interop.InteropLibrarySnippets
InnerClasses:
  BlockNode = com.oracle.truffle.api.interop.InteropLibrarySnippets$BlockNode of com.oracle.truffle.api.interop.InteropLibrarySnippets
  abstract StatementNode = com.oracle.truffle.api.interop.InteropLibrarySnippets$StatementNode of com.oracle.truffle.api.interop.InteropLibrarySnippets
  final TryCatchNode = com.oracle.truffle.api.interop.InteropLibrarySnippets$TryCatchNode of com.oracle.truffle.api.interop.InteropLibrarySnippets
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node