public class com.oracle.truffle.js.test.runtime.NullishCoalescingTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.test.runtime.NullishCoalescingTest
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.NullishCoalescingTest this
         0: .line 55
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.test.runtime.NullishCoalescingTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/runtime/NullishCoalescingTest;

  public void testNullish();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.NullishCoalescingTest this
         0: .line 59
            ldc "null ?? 'exp'"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testIntl:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            ldc "exp"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 60
            ldc "undefined ?? 'exp'"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testIntl:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            ldc "exp"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         2: .line 61
            ldc "42 ?? 'exp'"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testIntl:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            bipush 42
            if_icmpne 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 62
            ldc "42.42 ?? 'exp'"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testIntl:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asDouble:()D
            ldc 42.42
            dcmpl
            ifne 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 63
            ldc "false ?? 'exp'"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testIntl:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            ifeq 9
            iconst_0
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_1
      StackMap locals:
      StackMap stack: int
        10: invokestatic org.junit.Assert.assertTrue:(Z)V
        11: .line 64
            ldc "true ?? 'exp'"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testIntl:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        12: .line 65
            return
        end local 0 // com.oracle.truffle.js.test.runtime.NullishCoalescingTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/oracle/truffle/js/test/runtime/NullishCoalescingTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testNullishErrors();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.NullishCoalescingTest this
         0: .line 69
            ldc "cannot immediately contain"
            astore 1 /* expected */
        start local 1 // java.lang.String expected
         1: .line 70
            ldc "2020"
            aload 1 /* expected */
            ldc "1 ?? 1 || 1"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testFail:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         2: .line 71
            ldc "2020"
            aload 1 /* expected */
            ldc "1 ?? 1 && 1"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testFail:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         3: .line 72
            ldc "2020"
            aload 1 /* expected */
            ldc "1 || 1 ?? 1"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testFail:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         4: .line 73
            ldc "2020"
            aload 1 /* expected */
            ldc "1 && 1 ?? 1"
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testFail:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         5: .line 74
            return
        end local 1 // java.lang.String expected
        end local 0 // com.oracle.truffle.js.test.runtime.NullishCoalescingTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lcom/oracle/truffle/js/test/runtime/NullishCoalescingTest;
            1    6     1  expected  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static org.graalvm.polyglot.Value testIntl(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.String source
         0: .line 77
            ldc "2019"
            ldc "Expected an operand but found ?"
            aload 0 /* source */
            invokestatic com.oracle.truffle.js.test.runtime.NullishCoalescingTest.testFail:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         1: .line 79
            aconst_null
            astore 1
            aconst_null
            astore 2
         2: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "js.ecmascript-version"
            ldc "2020"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         3: .line 80
            aload 3 /* context */
            ldc "js"
            aload 0 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         4: .line 81
            aload 3 /* context */
            ifnull 5
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
         5: .line 80
      StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: org.graalvm.polyglot.Value
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 1
         7: .line 81
            aload 3 /* context */
            ifnull 8
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
         8: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 2
            aload 1
            ifnonnull 10
            aload 2
            astore 1
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 1
            aload 2
            if_acmpeq 11
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        11: aload 1
            athrow
        end local 0 // java.lang.String source
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0   source  Ljava/lang/String;
            3    8     3  context  Lorg/graalvm/polyglot/Context;
      Exception table:
        from    to  target  type
           3     4       6  any
           2     5       9  any
           6     9       9  any
    MethodParameters:
        Name  Flags
      source  

  private static void testFail(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // java.lang.String version
        start local 1 // java.lang.String expectedFail
        start local 2 // java.lang.String source
         0: .line 85
            aconst_null
            astore 3
            aconst_null
            astore 4
         1: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "js.ecmascript-version"
            aload 0 /* version */
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 5 /* context */
        start local 5 // org.graalvm.polyglot.Context context
         2: .line 87
            aload 5 /* context */
            ldc "js"
            aload 2 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 88
            invokestatic org.junit.Assert.fail:()V
         4: .line 89
            goto 8
      StackMap locals: java.lang.String java.lang.String java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 6 /* e */
        start local 6 // org.graalvm.polyglot.PolyglotException e
         6: .line 90
            aload 6 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isSyntaxError:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 91
            aload 6 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 6 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* expectedFail */
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 6 // org.graalvm.polyglot.PolyglotException e
         8: .line 93
      StackMap locals:
      StackMap stack:
            aload 5 /* context */
            ifnull 14
            aload 5 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 3
            aload 5 /* context */
            ifnull 10
            aload 5 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 5 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        10: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 4
            aload 3
            ifnonnull 12
            aload 4
            astore 3
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 3
            aload 4
            if_acmpeq 13
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 3
            athrow
        14: .line 94
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String source
        end local 1 // java.lang.String expectedFail
        end local 0 // java.lang.String version
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0       version  Ljava/lang/String;
            0   15     1  expectedFail  Ljava/lang/String;
            0   15     2        source  Ljava/lang/String;
            2   10     5       context  Lorg/graalvm/polyglot/Context;
            6    8     6             e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
           2     8       9  any
           1    11      11  any
    MethodParameters:
              Name  Flags
      version       
      expectedFail  
      source        
}
SourceFile: "NullishCoalescingTest.java"
InnerClasses:
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context