public class com.oracle.truffle.trufflenode.serialization.Serializer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.trufflenode.serialization.Serializer
  super_class: java.lang.Object
{
  static final byte VERSION;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  static final byte LATEST_VERSION;
    descriptor: B
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 13

  static final java.lang.String NATIVE_UTF16_ENCODING;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final long delegate;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.nio.ByteBuffer buffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private int nextId;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final java.util.Map<java.lang.Object, java.lang.Integer> objectMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Integer;>;

  private final java.util.Map<java.lang.Object, java.lang.Integer> transferMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Integer;>;

  private boolean treatArrayBufferViewsAsHostObjects;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final com.oracle.truffle.api.TruffleLanguage$Env env;
    descriptor: Lcom/oracle/truffle/api/TruffleLanguage$Env;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.trufflenode.GraalJSAccess access;
    descriptor: Lcom/oracle/truffle/trufflenode/GraalJSAccess;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private static volatile int[] $SWITCH_TABLE$com$oracle$truffle$js$runtime$JSErrorType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 90
            ldc Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            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.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
         3: .line 93
            invokestatic java.nio.ByteOrder.nativeOrder:()Ljava/nio/ByteOrder;
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            if_acmpne 4
            ldc "UTF-16BE"
            goto 5
      StackMap locals:
      StackMap stack:
         4: ldc "UTF-16LE"
      StackMap locals:
      StackMap stack: java.lang.String
         5: putstatic com.oracle.truffle.trufflenode.serialization.Serializer.NATIVE_UTF16_ENCODING:Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.trufflenode.GraalJSAccess, long);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/trufflenode/GraalJSAccess;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.js.runtime.JSContext mainJSContext
        start local 2 // com.oracle.truffle.trufflenode.GraalJSAccess access
        start local 3 // long delegate
         0: .line 111
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 98
            aload 0 /* this */
            sipush 1024
            invokestatic com.oracle.truffle.trufflenode.serialization.Serializer.allocateBuffer:(I)Ljava/nio/ByteBuffer;
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
         2: .line 102
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.objectMap:Ljava/util/Map;
         3: .line 104
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.transferMap:Ljava/util/Map;
         4: .line 112
            aload 0 /* this */
            lload 3 /* delegate */
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.delegate:J
         5: .line 113
            aload 0 /* this */
            aload 1 /* mainJSContext */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
         6: .line 114
            aload 0 /* this */
            aload 2 /* access */
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.access:Lcom/oracle/truffle/trufflenode/GraalJSAccess;
         7: .line 115
            return
        end local 3 // long delegate
        end local 2 // com.oracle.truffle.trufflenode.GraalJSAccess access
        end local 1 // com.oracle.truffle.js.runtime.JSContext mainJSContext
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    8     1  mainJSContext  Lcom/oracle/truffle/js/runtime/JSContext;
            0    8     2         access  Lcom/oracle/truffle/trufflenode/GraalJSAccess;
            0    8     3       delegate  J
    MethodParameters:
               Name  Flags
      mainJSContext  
      access         
      delegate       

  public void setTreatArrayBufferViewsAsHostObjects(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // boolean treatArrayBufferViewsAsHostObjects
         0: .line 118
            aload 0 /* this */
            iload 1 /* treatArrayBufferViewsAsHostObjects */
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.treatArrayBufferViewsAsHostObjects:Z
         1: .line 119
            return
        end local 1 // boolean treatArrayBufferViewsAsHostObjects
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0    2     0                                this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    2     1  treatArrayBufferViewsAsHostObjects  Z
    MethodParameters:
                                    Name  Flags
      treatArrayBufferViewsAsHostObjects  

  private static java.nio.ByteBuffer allocateBuffer(int);
    descriptor: (I)Ljava/nio/ByteBuffer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int capacity
         0: .line 122
            iload 0 /* capacity */
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            invokestatic java.nio.ByteOrder.nativeOrder:()Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            areturn
        end local 0 // int capacity
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  capacity  I
    MethodParameters:
          Name  Flags
      capacity  

  private void ensureFreeSpace(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // int spaceNeeded
         0: .line 126
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            astore 2 /* oldBuffer */
        start local 2 // java.nio.ByteBuffer oldBuffer
         1: .line 127
            aload 2 /* oldBuffer */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            istore 3 /* capacity */
        start local 3 // int capacity
         2: .line 128
            aload 2 /* oldBuffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 1 /* spaceNeeded */
            iadd
            istore 4 /* capacityNeeded */
        start local 4 // int capacityNeeded
         3: .line 129
            iload 4 /* capacityNeeded */
            iload 3 /* capacity */
            if_icmple 9
         4: .line 130
            iload 4 /* capacityNeeded */
            iconst_2
            iload 3 /* capacity */
            imul
            invokestatic java.lang.Math.max:(II)I
            istore 5 /* newCapacity */
        start local 5 // int newCapacity
         5: .line 131
            iload 5 /* newCapacity */
            invokestatic com.oracle.truffle.trufflenode.serialization.Serializer.allocateBuffer:(I)Ljava/nio/ByteBuffer;
            astore 6 /* newBuffer */
        start local 6 // java.nio.ByteBuffer newBuffer
         6: .line 132
            aload 2 /* oldBuffer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
         7: .line 133
            aload 6 /* newBuffer */
            aload 2 /* oldBuffer */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         8: .line 134
            aload 0 /* this */
            aload 6 /* newBuffer */
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
        end local 6 // java.nio.ByteBuffer newBuffer
        end local 5 // int newCapacity
         9: .line 136
      StackMap locals: java.nio.ByteBuffer int int
      StackMap stack:
            return
        end local 4 // int capacityNeeded
        end local 3 // int capacity
        end local 2 // java.nio.ByteBuffer oldBuffer
        end local 1 // int spaceNeeded
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0            this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   10     1     spaceNeeded  I
            1   10     2       oldBuffer  Ljava/nio/ByteBuffer;
            2   10     3        capacity  I
            3   10     4  capacityNeeded  I
            5    9     5     newCapacity  I
            6    9     6       newBuffer  Ljava/nio/ByteBuffer;
    MethodParameters:
             Name  Flags
      spaceNeeded  

  public void writeHeader();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
         0: .line 139
            aload 0 /* this */
            iconst_2
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.ensureFreeSpace:(I)V
         1: .line 140
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            iconst_m1
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         2: .line 141
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            bipush 13
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         3: .line 142
            return
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;

  private void writeTag(com.oracle.truffle.trufflenode.serialization.SerializationTag);
    descriptor: (Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.trufflenode.serialization.SerializationTag tag
         0: .line 145
            aload 0 /* this */
            aload 1 /* tag */
            invokevirtual com.oracle.truffle.trufflenode.serialization.SerializationTag.getTag:()B
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeByte:(B)V
         1: .line 146
            return
        end local 1 // com.oracle.truffle.trufflenode.serialization.SerializationTag tag
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    2     1   tag  Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
    MethodParameters:
      Name  Flags
      tag   

  private void writeTag(com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag);
    descriptor: (Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag tag
         0: .line 149
            aload 0 /* this */
            aload 1 /* tag */
            invokevirtual com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag.getTag:()B
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeByte:(B)V
         1: .line 150
            return
        end local 1 // com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag tag
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    2     1   tag  Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;
    MethodParameters:
      Name  Flags
      tag   

  private void writeTag(com.oracle.truffle.trufflenode.serialization.ErrorTag);
    descriptor: (Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
         0: .line 153
            aload 0 /* this */
            aload 1 /* tag */
            invokevirtual com.oracle.truffle.trufflenode.serialization.ErrorTag.getTag:()B
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeByte:(B)V
         1: .line 154
            return
        end local 1 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    2     1   tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
    MethodParameters:
      Name  Flags
      tag   

  private void writeByte(byte);
    descriptor: (B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // byte b
         0: .line 157
            aload 0 /* this */
            iconst_1
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.ensureFreeSpace:(I)V
         1: .line 158
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            iload 1 /* b */
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         2: .line 159
            return
        end local 1 // byte b
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1     b  B
    MethodParameters:
      Name  Flags
      b     

  public void writeValue(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.lang.Object value
         0: .line 162
            aload 1 /* value */
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            if_acmpne 3
         1: .line 163
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.TRUE:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         2: .line 164
            goto 34
      StackMap locals:
      StackMap stack:
         3: aload 1 /* value */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            if_acmpne 6
         4: .line 165
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.FALSE:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         5: .line 166
            goto 34
      StackMap locals:
      StackMap stack:
         6: aload 1 /* value */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 9
         7: .line 167
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.UNDEFINED:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         8: .line 168
            goto 34
      StackMap locals:
      StackMap stack:
         9: aload 1 /* value */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 12
        10: .line 169
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.NULL:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        11: .line 170
            goto 34
      StackMap locals:
      StackMap stack:
        12: aload 1 /* value */
            instanceof java.lang.Integer
            ifeq 15
        13: .line 171
            aload 0 /* this */
            aload 1 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeInt:(I)V
        14: .line 172
            goto 34
      StackMap locals:
      StackMap stack:
        15: aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isNumber:(Ljava/lang/Object;)Z
            ifeq 19
        16: .line 173
            aload 1 /* value */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.doubleValue:()D
            dstore 2 /* doubleValue */
        start local 2 // double doubleValue
        17: .line 174
            aload 0 /* this */
            dload 2 /* doubleValue */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeIntOrDouble:(D)V
        end local 2 // double doubleValue
        18: .line 175
            goto 34
      StackMap locals:
      StackMap stack:
        19: aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isString:(Ljava/lang/Object;)Z
            ifeq 22
        20: .line 176
            aload 0 /* this */
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toString:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeString:(Ljava/lang/String;)V
        21: .line 177
            goto 34
      StackMap locals:
      StackMap stack:
        22: aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isBigInt:(Ljava/lang/Object;)Z
            ifeq 26
        23: .line 178
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BIG_INT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        24: .line 179
            aload 0 /* this */
            aload 1 /* value */
            checkcast com.oracle.truffle.js.runtime.BigInt
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeBigIntContents:(Lcom/oracle/truffle/js/runtime/BigInt;)V
        25: .line 180
            goto 34
      StackMap locals:
      StackMap stack:
        26: aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.isHostObject:(Ljava/lang/Object;)Z
            ifeq 33
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.access:Lcom/oracle/truffle/trufflenode/GraalJSAccess;
            invokevirtual com.oracle.truffle.trufflenode.GraalJSAccess.getCurrentMessagePortData:()Lcom/oracle/truffle/trufflenode/threading/JavaMessagePortData;
            ifnull 33
        27: .line 181
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.access:Lcom/oracle/truffle/trufflenode/GraalJSAccess;
            invokevirtual com.oracle.truffle.trufflenode.GraalJSAccess.getCurrentMessagePortData:()Lcom/oracle/truffle/trufflenode/threading/JavaMessagePortData;
            astore 2 /* messagePort */
        start local 2 // com.oracle.truffle.trufflenode.threading.JavaMessagePortData messagePort
        28: .line 182
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.SHARED_JAVA_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        29: .line 183
            aload 0 /* this */
            aload 2 /* messagePort */
            invokevirtual com.oracle.truffle.trufflenode.threading.JavaMessagePortData.getMessagePortDataPointer:()J
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        30: .line 184
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.assignId:(Ljava/lang/Object;)V
        31: .line 185
            aload 2 /* messagePort */
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.env:Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 1 /* value */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.asHostObject:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual com.oracle.truffle.trufflenode.threading.JavaMessagePortData.enqueueJavaRef:(Ljava/lang/Object;)V
        end local 2 // com.oracle.truffle.trufflenode.threading.JavaMessagePortData messagePort
        32: .line 186
            goto 34
        33: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeObject:(Ljava/lang/Object;)V
        34: .line 189
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   35     0         this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   35     1        value  Ljava/lang/Object;
           17   18     2  doubleValue  D
           28   32     2  messagePort  Lcom/oracle/truffle/trufflenode/threading/JavaMessagePortData;
    MethodParameters:
       Name  Flags
      value  

  private void writeObject(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.lang.Object object
         0: .line 192
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.objectMap:Ljava/util/Map;
            aload 1 /* object */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 2 /* id */
        start local 2 // java.lang.Integer id
         1: .line 193
            aload 2 /* id */
            ifnull 5
         2: .line 194
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.OBJECT_REFERENCE:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         3: .line 195
            aload 0 /* this */
            aload 2 /* id */
            invokevirtual java.lang.Integer.intValue:()I
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         4: .line 196
            return
         5: .line 198
      StackMap locals: java.lang.Integer
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.treatArrayBufferViewsAsHostObjects:Z
            ifne 12
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBufferView.isJSArrayBufferView:(Ljava/lang/Object;)Z
            ifeq 12
         6: .line 199
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBufferView.getArrayBuffer:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 3 /* arrayBuffer */
        start local 3 // com.oracle.truffle.api.object.DynamicObject arrayBuffer
         7: .line 200
            aload 0 /* this */
            aload 3 /* arrayBuffer */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.assignId:(Ljava/lang/Object;)V
         8: .line 201
            aload 3 /* arrayBuffer */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSSharedArrayBuffer.isJSSharedArrayBuffer:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 202
            aload 0 /* this */
            aload 3 /* arrayBuffer */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSSharedArrayBuffer:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        10: .line 203
            goto 12
        11: .line 204
      StackMap locals: com.oracle.truffle.api.object.DynamicObject
      StackMap stack:
            aload 0 /* this */
            aload 3 /* arrayBuffer */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSArrayBuffer:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        end local 3 // com.oracle.truffle.api.object.DynamicObject arrayBuffer
        12: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.assignId:(Ljava/lang/Object;)V
        13: .line 208
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSDate.isJSDate:(Ljava/lang/Object;)Z
            ifeq 17
        14: .line 209
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.DATE:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        15: .line 210
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeDate:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        16: .line 211
            goto 75
      StackMap locals:
      StackMap stack:
        17: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBoolean.isJSBoolean:(Ljava/lang/Object;)Z
            ifeq 20
        18: .line 212
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSBoolean:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        19: .line 213
            goto 75
      StackMap locals:
      StackMap stack:
        20: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.isJSNumber:(Ljava/lang/Object;)Z
            ifeq 23
        21: .line 214
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSNumber:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        22: .line 215
            goto 75
      StackMap locals:
      StackMap stack:
        23: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBigInt.isJSBigInt:(Ljava/lang/Object;)Z
            ifeq 27
        24: .line 216
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BIG_INT_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        25: .line 217
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBigInt.valueOf:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/BigInt;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeBigIntContents:(Lcom/oracle/truffle/js/runtime/BigInt;)V
        26: .line 218
            goto 75
      StackMap locals:
      StackMap stack:
        27: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.isJSString:(Ljava/lang/Object;)Z
            ifeq 30
        28: .line 219
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSString:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        29: .line 220
            goto 75
      StackMap locals:
      StackMap stack:
        30: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSRegExp.isJSRegExp:(Ljava/lang/Object;)Z
            ifeq 33
        31: .line 221
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSRegExp:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        32: .line 222
            goto 75
      StackMap locals:
      StackMap stack:
        33: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBuffer.isJSDirectArrayBuffer:(Ljava/lang/Object;)Z
            ifeq 36
        34: .line 223
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSArrayBuffer:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        35: .line 224
            goto 75
      StackMap locals:
      StackMap stack:
        36: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSSharedArrayBuffer.isJSSharedArrayBuffer:(Ljava/lang/Object;)Z
            ifeq 39
        37: .line 225
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSSharedArrayBuffer:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        38: .line 226
            goto 75
      StackMap locals:
      StackMap stack:
        39: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSMap.isJSMap:(Ljava/lang/Object;)Z
            ifeq 42
        40: .line 227
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSMap:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        41: .line 228
            goto 75
      StackMap locals:
      StackMap stack:
        42: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSSet.isJSSet:(Ljava/lang/Object;)Z
            ifeq 45
        43: .line 229
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSSet:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        44: .line 230
            goto 75
      StackMap locals:
      StackMap stack:
        45: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.isJSArray:(Ljava/lang/Object;)Z
            ifeq 48
        46: .line 231
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSArray:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        47: .line 232
            goto 75
      StackMap locals:
      StackMap stack:
        48: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBufferView.isJSArrayBufferView:(Ljava/lang/Object;)Z
            ifeq 51
        49: .line 233
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSArrayBufferView:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        50: .line 234
            goto 75
      StackMap locals:
      StackMap stack:
        51: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSDataView.isJSDataView:(Ljava/lang/Object;)Z
            ifeq 54
        52: .line 235
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSDataView:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        53: .line 236
            goto 75
      StackMap locals:
      StackMap stack:
        54: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSError.isJSError:(Ljava/lang/Object;)Z
            ifeq 57
        55: .line 237
            aload 0 /* this */
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSError:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        56: .line 238
            goto 75
      StackMap locals:
      StackMap stack:
        57: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.isJSProxy:(Ljava/lang/Object;)Z
            ifeq 64
        58: .line 239
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isCallableProxy:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            istore 3 /* callable */
        start local 3 // boolean callable
        59: .line 240
            new java.lang.StringBuilder
            dup
            iload 3 /* callable */
            ifeq 60
            ldc "[object Function]"
            goto 61
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer java.lang.Object java.lang.Integer int
      StackMap stack: new 59 new 59
        60: ldc "[object Object]"
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer java.lang.Object java.lang.Integer int
      StackMap stack: new 59 new 59 java.lang.String
        61: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " could not be cloned."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* message */
        start local 4 // java.lang.String message
        62: .line 241
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.delegate:J
            aload 4 /* message */
            invokestatic com.oracle.truffle.trufflenode.NativeAccess.throwDataCloneError:(JLjava/lang/String;)V
        end local 4 // java.lang.String message
        end local 3 // boolean callable
        63: .line 242
            goto 75
      StackMap locals:
      StackMap stack:
        64: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifeq 67
        65: .line 243
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.delegate:J
            new java.lang.StringBuilder
            dup
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " could not be cloned."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.oracle.truffle.trufflenode.NativeAccess.throwDataCloneError:(JLjava/lang/String;)V
        66: .line 244
            goto 75
      StackMap locals:
      StackMap stack:
        67: aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifeq 74
        68: .line 245
            aload 1 /* object */
            checkcast com.oracle.truffle.api.object.DynamicObject
            astore 3 /* dynamicObject */
        start local 3 // com.oracle.truffle.api.object.DynamicObject dynamicObject
        69: .line 246
            aload 3 /* dynamicObject */
            invokestatic com.oracle.truffle.trufflenode.GraalJSAccess.internalFieldCount:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            ifne 72
        70: .line 247
            aload 0 /* this */
            aload 3 /* dynamicObject */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSObject:(Lcom/oracle/truffle/api/object/DynamicObject;)V
        71: .line 248
            goto 75
        72: .line 249
      StackMap locals: com.oracle.truffle.api.object.DynamicObject
      StackMap stack:
            aload 0 /* this */
            aload 3 /* dynamicObject */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeHostObject:(Ljava/lang/Object;)V
        end local 3 // com.oracle.truffle.api.object.DynamicObject dynamicObject
        73: .line 251
            goto 75
        74: .line 252
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeHostObject:(Ljava/lang/Object;)V
        75: .line 254
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Integer id
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   76     0           this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   76     1         object  Ljava/lang/Object;
            1   76     2             id  Ljava/lang/Integer;
            7   12     3    arrayBuffer  Lcom/oracle/truffle/api/object/DynamicObject;
           59   63     3       callable  Z
           62   63     4        message  Ljava/lang/String;
           69   73     3  dynamicObject  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
        Name  Flags
      object  

  private void writeInt(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // int value
         0: .line 257
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.INT32:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         1: .line 258
            iload 1 /* value */
            iconst_1
            ishl
            iload 1 /* value */
            bipush 31
            ishr
            ixor
            istore 2 /* zigzag */
        start local 2 // int zigzag
         2: .line 259
            aload 0 /* this */
            iload 2 /* zigzag */
            invokestatic java.lang.Integer.toUnsignedLong:(I)J
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         3: .line 260
            return
        end local 2 // int zigzag
        end local 1 // int value
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    4     1   value  I
            2    4     2  zigzag  I
    MethodParameters:
       Name  Flags
      value  

  public void writeVarInt(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // long value
         0: .line 263
            lload 1 /* value */
            lstore 3 /* rest */
        start local 3 // long rest
         1: .line 264
            bipush 10
            newarray 8
            astore 5 /* bytes */
        start local 5 // byte[] bytes
         2: .line 265
            iconst_0
            istore 6 /* idx */
        start local 6 // int idx
         3: .line 267
      StackMap locals: long byte[] int
      StackMap stack:
            lload 3 /* rest */
            l2i
            i2b
            istore 7 /* b */
        start local 7 // byte b
         4: .line 268
            iload 7 /* b */
            sipush 128
            ior
            i2b
            istore 7 /* b */
         5: .line 269
            aload 5 /* bytes */
            iload 6 /* idx */
            iload 7 /* b */
            bastore
         6: .line 270
            iinc 6 /* idx */ 1
         7: .line 271
            lload 3 /* rest */
            bipush 7
            lushr
            lstore 3 /* rest */
        end local 7 // byte b
         8: .line 272
            lload 3 /* rest */
            lconst_0
            lcmp
            ifne 3
         9: .line 273
            aload 5 /* bytes */
            iload 6 /* idx */
            iconst_1
            isub
            dup2
            baload
            bipush 127
            iand
            i2b
            bastore
        10: .line 274
            aload 0 /* this */
            aload 5 /* bytes */
            iload 6 /* idx */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeBytes:([BI)V
        11: .line 275
            return
        end local 6 // int idx
        end local 5 // byte[] bytes
        end local 3 // long rest
        end local 1 // long value
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   12     1  value  J
            1   12     3   rest  J
            2   12     5  bytes  [B
            3   12     6    idx  I
            4    8     7      b  B
    MethodParameters:
       Name  Flags
      value  

  private void writeBytes(byte[], int);
    descriptor: ([BI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // byte[] bytes
        start local 2 // int length
         0: .line 278
            aload 0 /* this */
            iload 2 /* length */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.ensureFreeSpace:(I)V
         1: .line 279
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            aload 1 /* bytes */
            iconst_0
            iload 2 /* length */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         2: .line 280
            return
        end local 2 // int length
        end local 1 // byte[] bytes
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1   bytes  [B
            0    3     2  length  I
    MethodParameters:
        Name  Flags
      bytes   
      length  

  public void writeBytes(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.nio.ByteBuffer bytes
         0: .line 283
            aload 0 /* this */
            aload 1 /* bytes */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.ensureFreeSpace:(I)V
         1: .line 284
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            aload 1 /* bytes */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         2: .line 285
            return
        end local 1 // java.nio.ByteBuffer bytes
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1  bytes  Ljava/nio/ByteBuffer;
    MethodParameters:
       Name  Flags
      bytes  

  public void writeIntOrDouble(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // double value
         0: .line 288
            dload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.doubleIsRepresentableAsInt:(D)Z
            ifeq 3
         1: .line 289
            aload 0 /* this */
            dload 1 /* value */
            d2i
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeInt:(I)V
         2: .line 290
            goto 5
         3: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.DOUBLE:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         4: .line 292
            aload 0 /* this */
            dload 1 /* value */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeDouble:(D)V
         5: .line 294
      StackMap locals:
      StackMap stack:
            return
        end local 1 // double value
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    6     1  value  D
    MethodParameters:
       Name  Flags
      value  

  public void writeDouble(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // double value
         0: .line 297
            aload 0 /* this */
            bipush 8
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.ensureFreeSpace:(I)V
         1: .line 298
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            dload 1 /* value */
            invokevirtual java.nio.ByteBuffer.putDouble:(D)Ljava/nio/ByteBuffer;
            pop
         2: .line 299
            return
        end local 1 // double value
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1  value  D
    MethodParameters:
       Name  Flags
      value  

  private void writeString(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.lang.String string
         0: .line 306
            aload 1 /* string */
            invokestatic com.oracle.truffle.trufflenode.serialization.Serializer.isOneByteString:(Ljava/lang/String;)Z
            ifeq 4
         1: .line 307
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.ONE_BYTE_STRING:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            astore 3 /* tag */
        start local 3 // com.oracle.truffle.trufflenode.serialization.SerializationTag tag
         2: .line 308
            ldc "ISO-8859-1"
            astore 4 /* encoding */
        start local 4 // java.lang.String encoding
         3: .line 309
            goto 6
        end local 4 // java.lang.String encoding
        end local 3 // com.oracle.truffle.trufflenode.serialization.SerializationTag tag
         4: .line 310
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.TWO_BYTE_STRING:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            astore 3 /* tag */
        start local 3 // com.oracle.truffle.trufflenode.serialization.SerializationTag tag
         5: .line 311
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.NATIVE_UTF16_ENCODING:Ljava/lang/String;
            astore 4 /* encoding */
        start local 4 // java.lang.String encoding
         6: .line 313
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer java.lang.String top com.oracle.truffle.trufflenode.serialization.SerializationTag java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* tag */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         7: .line 314
            aload 1 /* string */
            aload 4 /* encoding */
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            astore 2 /* bytes */
        start local 2 // byte[] bytes
         8: .line 315
            aload 0 /* this */
            aload 2 /* bytes */
            arraylength
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         9: .line 316
            aload 0 /* this */
            aload 2 /* bytes */
            aload 2 /* bytes */
            arraylength
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeBytes:([BI)V
        end local 4 // java.lang.String encoding
        end local 3 // com.oracle.truffle.trufflenode.serialization.SerializationTag tag
        end local 2 // byte[] bytes
        10: .line 317
            goto 13
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
        11: pop
        12: .line 318
            invokestatic com.oracle.truffle.js.runtime.Errors.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        13: .line 320
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String string
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   14     1    string  Ljava/lang/String;
            8   10     2     bytes  [B
            2    4     3       tag  Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            5   10     3       tag  Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            3    4     4  encoding  Ljava/lang/String;
            6   10     4  encoding  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0    10      11  Class java.io.UnsupportedEncodingException
    MethodParameters:
        Name  Flags
      string  

  private static boolean isOneByteString(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // java.lang.String string
         0: .line 323
            aload 0 /* string */
            invokevirtual java.lang.String.toCharArray:()[C
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 5
      StackMap locals: java.lang.String top int int char[]
      StackMap stack:
         1: aload 4
            iload 2
            caload
            istore 1 /* c */
        start local 1 // char c
         2: .line 324
            iload 1 /* c */
            sipush 256
            if_icmplt 4
         3: .line 325
            iconst_0
            ireturn
        end local 1 // char c
         4: .line 323
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         5: iload 2
            iload 3
            if_icmplt 1
         6: .line 328
            iconst_1
            ireturn
        end local 0 // java.lang.String string
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  string  Ljava/lang/String;
            2    4     1       c  C
    MethodParameters:
        Name  Flags
      string  

  private void writeDate(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject date
         0: .line 332
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* date */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSDate.isJSDate:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 333
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* date */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSDate.getTimeMillisField:(Lcom/oracle/truffle/api/object/DynamicObject;)D
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeDouble:(D)V
         2: .line 334
            return
        end local 1 // com.oracle.truffle.api.object.DynamicObject date
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1  date  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
      Name  Flags
      date  

  private void writeJSBoolean(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject bool
         0: .line 337
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* bool */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBoolean.isJSBoolean:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 338
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* bool */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBoolean.valueOf:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
            ifeq 2
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.TRUE_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            goto 3
      StackMap locals:
      StackMap stack: com.oracle.truffle.trufflenode.serialization.Serializer
         2: getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.FALSE_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.api.object.DynamicObject
      StackMap stack: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.trufflenode.serialization.SerializationTag
         3: invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         4: .line 339
            return
        end local 1 // com.oracle.truffle.api.object.DynamicObject bool
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    5     1  bool  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
      Name  Flags
      bool  

  private void writeJSNumber(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject number
         0: .line 342
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* number */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.isJSNumber:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 343
      StackMap locals:
      StackMap stack:
            aload 1 /* number */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.valueOf:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Number;
            invokevirtual java.lang.Number.doubleValue:()D
            dstore 2 /* value */
        start local 2 // double value
         2: .line 344
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.NUMBER_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         3: .line 345
            aload 0 /* this */
            dload 2 /* value */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeDouble:(D)V
         4: .line 346
            return
        end local 2 // double value
        end local 1 // com.oracle.truffle.api.object.DynamicObject number
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    5     1  number  Lcom/oracle/truffle/api/object/DynamicObject;
            2    5     2   value  D
    MethodParameters:
        Name  Flags
      number  

  private void writeJSString(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject string
         0: .line 349
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* string */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.isJSString:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 350
      StackMap locals:
      StackMap stack:
            aload 1 /* string */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.getString:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/String;
            astore 2 /* value */
        start local 2 // java.lang.String value
         2: .line 351
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.STRING_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         3: .line 352
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeString:(Ljava/lang/String;)V
         4: .line 353
            return
        end local 2 // java.lang.String value
        end local 1 // com.oracle.truffle.api.object.DynamicObject string
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    5     1  string  Lcom/oracle/truffle/api/object/DynamicObject;
            2    5     2   value  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      string  

  private void writeJSRegExp(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject regExp
         0: .line 356
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* regExp */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSRegExp.isJSRegExp:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 357
      StackMap locals:
      StackMap stack:
            aload 1 /* regExp */
            invokestatic com.oracle.truffle.trufflenode.GraalJSAccess.regexpPattern:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/String;
            astore 2 /* pattern */
        start local 2 // java.lang.String pattern
         2: .line 358
            aload 1 /* regExp */
            invokestatic com.oracle.truffle.trufflenode.GraalJSAccess.regexpV8Flags:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            istore 3 /* flags */
        start local 3 // int flags
         3: .line 359
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.REGEXP:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         4: .line 360
            aload 0 /* this */
            aload 2 /* pattern */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeString:(Ljava/lang/String;)V
         5: .line 361
            aload 0 /* this */
            iload 3 /* flags */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         6: .line 362
            return
        end local 3 // int flags
        end local 2 // java.lang.String pattern
        end local 1 // com.oracle.truffle.api.object.DynamicObject regExp
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    7     1   regExp  Lcom/oracle/truffle/api/object/DynamicObject;
            2    7     2  pattern  Ljava/lang/String;
            3    7     3    flags  I
    MethodParameters:
        Name  Flags
      regExp  

  private void writeJSArrayBuffer(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject arrayBuffer
         0: .line 365
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* arrayBuffer */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBuffer.isJSDirectArrayBuffer:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 366
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.transferMap:Ljava/util/Map;
            aload 1 /* arrayBuffer */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 2 /* id */
        start local 2 // java.lang.Integer id
         2: .line 367
            aload 2 /* id */
            ifnonnull 14
         3: .line 368
            aload 1 /* arrayBuffer */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBuffer.getDirectByteLength:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            istore 3 /* byteLength */
        start local 3 // int byteLength
         4: .line 369
            aload 1 /* arrayBuffer */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBuffer.getDirectByteBuffer:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/nio/ByteBuffer;
            astore 4 /* byteBuffer */
        start local 4 // java.nio.ByteBuffer byteBuffer
         5: .line 370
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.ARRAY_BUFFER:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         6: .line 371
            aload 0 /* this */
            iload 3 /* byteLength */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         7: .line 372
            aload 0 /* this */
            iload 3 /* byteLength */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.ensureFreeSpace:(I)V
         8: .line 373
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         9: goto 12
        10: .line 374
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.api.object.DynamicObject java.lang.Integer int java.nio.ByteBuffer int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            aload 4 /* byteBuffer */
            iload 5 /* i */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        11: .line 373
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 5 /* i */
            iload 3 /* byteLength */
            if_icmplt 10
        end local 5 // int i
        end local 4 // java.nio.ByteBuffer byteBuffer
        end local 3 // int byteLength
        13: .line 376
            goto 16
        14: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.ARRAY_BUFFER_TRANSFER:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        15: .line 378
            aload 0 /* this */
            aload 2 /* id */
            invokevirtual java.lang.Integer.intValue:()I
            invokestatic java.lang.Integer.toUnsignedLong:(I)J
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        16: .line 380
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Integer id
        end local 1 // com.oracle.truffle.api.object.DynamicObject arrayBuffer
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   17     1  arrayBuffer  Lcom/oracle/truffle/api/object/DynamicObject;
            2   17     2           id  Ljava/lang/Integer;
            4   13     3   byteLength  I
            5   13     4   byteBuffer  Ljava/nio/ByteBuffer;
            9   13     5            i  I
    MethodParameters:
             Name  Flags
      arrayBuffer  

  private void writeJSSharedArrayBuffer(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject sharedArrayBuffer
         0: .line 383
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.delegate:J
            aload 1 /* sharedArrayBuffer */
            invokestatic com.oracle.truffle.trufflenode.NativeAccess.getSharedArrayBufferId:(JLjava/lang/Object;)I
            istore 2 /* id */
        start local 2 // int id
         1: .line 384
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.SHARED_ARRAY_BUFFER:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         2: .line 385
            aload 0 /* this */
            iload 2 /* id */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         3: .line 386
            return
        end local 2 // int id
        end local 1 // com.oracle.truffle.api.object.DynamicObject sharedArrayBuffer
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    4     1  sharedArrayBuffer  Lcom/oracle/truffle/api/object/DynamicObject;
            1    4     2                 id  I
    MethodParameters:
                   Name  Flags
      sharedArrayBuffer  

  private void writeJSObject(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 389
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 390
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BEGIN_JS_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         2: .line 391
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.enumerableOwnNames:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/List;
            astore 2 /* names */
        start local 2 // java.util.List names
         3: .line 392
            aload 0 /* this */
            aload 1 /* object */
            aload 2 /* names */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSObjectProperties:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)V
         4: .line 393
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.END_JS_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         5: .line 394
            aload 0 /* this */
            aload 2 /* names */
            invokeinterface java.util.List.size:()I
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         6: .line 395
            return
        end local 2 // java.util.List names
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    7     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
            3    7     2   names  Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
        Name  Flags
      object  

  private void writeJSObjectProperties(com.oracle.truffle.api.object.DynamicObject, java.util.List<java.lang.String>);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // java.util.List keys
         0: .line 398
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 399
      StackMap locals:
      StackMap stack:
            aload 2 /* keys */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.api.object.DynamicObject java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* key */
        start local 3 // java.lang.String key
         3: .line 400
            aload 3 /* key */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isArrayIndex:(Ljava/lang/String;)Z
            ifeq 6
         4: .line 401
            aload 0 /* this */
            aload 3 /* key */
            invokestatic java.lang.Double.parseDouble:(Ljava/lang/String;)D
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeIntOrDouble:(D)V
         5: .line 402
            goto 7
         6: .line 403
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.api.object.DynamicObject java.util.List java.lang.String java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 3 /* key */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeString:(Ljava/lang/String;)V
         7: .line 405
      StackMap locals:
      StackMap stack:
            aload 1 /* object */
            aload 3 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* value */
        start local 5 // java.lang.Object value
         8: .line 406
            aload 0 /* this */
            aload 5 /* value */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeValue:(Ljava/lang/Object;)V
        end local 5 // java.lang.Object value
        end local 3 // java.lang.String key
         9: .line 399
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.api.object.DynamicObject java.util.List top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        10: .line 408
            return
        end local 2 // java.util.List keys
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   11     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
            0   11     2    keys  Ljava/util/List<Ljava/lang/String;>;
            3    9     3     key  Ljava/lang/String;
            8    9     5   value  Ljava/lang/Object;
    Signature: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List<Ljava/lang/String;>;)V
    MethodParameters:
        Name  Flags
      object  
      keys    

  private void writeJSMap(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 411
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSMap.isJSMap:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BEGIN_JS_MAP:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         2: .line 413
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSMap.getInternalMap:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/util/JSHashMap;
            astore 2 /* map */
        start local 2 // com.oracle.truffle.js.runtime.util.JSHashMap map
         3: .line 414
            aload 2 /* map */
            invokevirtual com.oracle.truffle.js.runtime.util.JSHashMap.getEntries:()Lcom/oracle/truffle/js/runtime/util/JSHashMap$Cursor;
            astore 3 /* cursor */
        start local 3 // com.oracle.truffle.js.runtime.util.JSHashMap$Cursor cursor
         4: .line 415
            iconst_0
            istore 4 /* count */
        start local 4 // int count
         5: .line 416
            goto 9
         6: .line 417
      StackMap locals: com.oracle.truffle.js.runtime.util.JSHashMap com.oracle.truffle.js.runtime.util.JSHashMap$Cursor int
      StackMap stack:
            iinc 4 /* count */ 1
         7: .line 418
            aload 0 /* this */
            aload 3 /* cursor */
            invokeinterface com.oracle.truffle.js.runtime.util.JSHashMap$Cursor.getKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeValue:(Ljava/lang/Object;)V
         8: .line 419
            aload 0 /* this */
            aload 3 /* cursor */
            invokeinterface com.oracle.truffle.js.runtime.util.JSHashMap$Cursor.getValue:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeValue:(Ljava/lang/Object;)V
         9: .line 416
      StackMap locals:
      StackMap stack:
            aload 3 /* cursor */
            invokeinterface com.oracle.truffle.js.runtime.util.JSHashMap$Cursor.advance:()Z
            ifne 6
        10: .line 421
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.END_JS_MAP:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        11: .line 422
            aload 0 /* this */
            iconst_2
            iload 4 /* count */
            imul
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        12: .line 423
            return
        end local 4 // int count
        end local 3 // com.oracle.truffle.js.runtime.util.JSHashMap$Cursor cursor
        end local 2 // com.oracle.truffle.js.runtime.util.JSHashMap map
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   13     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
            3   13     2     map  Lcom/oracle/truffle/js/runtime/util/JSHashMap;
            4   13     3  cursor  Lcom/oracle/truffle/js/runtime/util/JSHashMap$Cursor;
            5   13     4   count  I
    MethodParameters:
        Name  Flags
      object  

  private void writeJSSet(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 426
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSSet.isJSSet:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BEGIN_JS_SET:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         2: .line 428
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSSet.getInternalSet:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/util/JSHashMap;
            astore 2 /* map */
        start local 2 // com.oracle.truffle.js.runtime.util.JSHashMap map
         3: .line 429
            aload 2 /* map */
            invokevirtual com.oracle.truffle.js.runtime.util.JSHashMap.getEntries:()Lcom/oracle/truffle/js/runtime/util/JSHashMap$Cursor;
            astore 3 /* cursor */
        start local 3 // com.oracle.truffle.js.runtime.util.JSHashMap$Cursor cursor
         4: .line 430
            iconst_0
            istore 4 /* count */
        start local 4 // int count
         5: .line 431
            goto 8
         6: .line 432
      StackMap locals: com.oracle.truffle.js.runtime.util.JSHashMap com.oracle.truffle.js.runtime.util.JSHashMap$Cursor int
      StackMap stack:
            iinc 4 /* count */ 1
         7: .line 433
            aload 0 /* this */
            aload 3 /* cursor */
            invokeinterface com.oracle.truffle.js.runtime.util.JSHashMap$Cursor.getKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeValue:(Ljava/lang/Object;)V
         8: .line 431
      StackMap locals:
      StackMap stack:
            aload 3 /* cursor */
            invokeinterface com.oracle.truffle.js.runtime.util.JSHashMap$Cursor.advance:()Z
            ifne 6
         9: .line 435
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.END_JS_SET:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        10: .line 436
            aload 0 /* this */
            iload 4 /* count */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        11: .line 437
            return
        end local 4 // int count
        end local 3 // com.oracle.truffle.js.runtime.util.JSHashMap$Cursor cursor
        end local 2 // com.oracle.truffle.js.runtime.util.JSHashMap map
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   12     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
            3   12     2     map  Lcom/oracle/truffle/js/runtime/util/JSHashMap;
            4   12     3  cursor  Lcom/oracle/truffle/js/runtime/util/JSHashMap$Cursor;
            5   12     4   count  I
    MethodParameters:
        Name  Flags
      object  

  private void writeJSArray(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 440
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.isJSArray:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 441
      StackMap locals:
      StackMap stack:
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSAbstractArray.arrayGetLength:(Lcom/oracle/truffle/api/object/DynamicObject;)J
            lstore 2 /* length */
        start local 2 // long length
         2: .line 442
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.enumerableOwnNames:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/List;
            astore 4 /* names */
        start local 4 // java.util.List names
         3: .line 443
            aload 4 /* names */
            invokeinterface java.util.List.size:()I
            i2l
            lload 2 /* length */
            lcmp
            iflt 4
            iconst_1
            goto 5
      StackMap locals: long java.util.List
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 5 /* dense */
        start local 5 // boolean dense
         6: .line 444
            iload 5 /* dense */
            ifeq 14
         7: .line 445
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         8: goto 13
         9: .line 446
      StackMap locals: int int
      StackMap stack:
            iload 6 /* i */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            aload 4 /* names */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
        10: .line 447
            iconst_0
            istore 5 /* dense */
        11: .line 448
            goto 14
        12: .line 445
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 6 /* i */
            i2l
            lload 2 /* length */
            lcmp
            iflt 9
        end local 6 // int i
        14: .line 452
      StackMap locals:
      StackMap stack:
            iload 5 /* dense */
            ifeq 26
        15: .line 453
            aload 4 /* names */
            lload 2 /* length */
            l2i
            aload 4 /* names */
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 4 /* names */
        16: .line 454
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BEGIN_DENSE_JS_ARRAY:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        17: .line 455
            aload 0 /* this */
            lload 2 /* length */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        18: .line 456
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        19: goto 22
        20: .line 457
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* object */
            iload 6 /* i */
            i2l
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;J)Ljava/lang/Object;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeValue:(Ljava/lang/Object;)V
        21: .line 456
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 6 /* i */
            i2l
            lload 2 /* length */
            lcmp
            iflt 20
        end local 6 // int i
        23: .line 459
            aload 0 /* this */
            aload 1 /* object */
            aload 4 /* names */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSObjectProperties:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)V
        24: .line 460
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.END_DENSE_JS_ARRAY:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        25: .line 461
            goto 30
        26: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.BEGIN_SPARSE_JS_ARRAY:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        27: .line 463
            aload 0 /* this */
            lload 2 /* length */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        28: .line 464
            aload 0 /* this */
            aload 1 /* object */
            aload 4 /* names */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSObjectProperties:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)V
        29: .line 465
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.END_SPARSE_JS_ARRAY:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
        30: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* names */
            invokeinterface java.util.List.size:()I
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        31: .line 468
            aload 0 /* this */
            lload 2 /* length */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        32: .line 469
            return
        end local 5 // boolean dense
        end local 4 // java.util.List names
        end local 2 // long length
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   33     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   33     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
            2   33     2  length  J
            3   33     4   names  Ljava/util/List<Ljava/lang/String;>;
            6   33     5   dense  Z
            8   14     6       i  I
           19   23     6       i  I
    MethodParameters:
        Name  Flags
      object  

  private void writeJSArrayBufferView(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject view
         0: .line 472
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.treatArrayBufferViewsAsHostObjects:Z
            ifeq 3
         1: .line 473
            aload 0 /* this */
            aload 1 /* view */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeHostObject:(Ljava/lang/Object;)V
         2: .line 474
            goto 8
         3: .line 475
      StackMap locals:
      StackMap stack:
            aload 1 /* view */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBufferView.typedArrayGetOffset:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            istore 2 /* offset */
        start local 2 // int offset
         4: .line 476
            aload 1 /* view */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArrayBufferView.typedArrayGetArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/TypedArray;
            astore 3 /* typedArray */
        start local 3 // com.oracle.truffle.js.runtime.array.TypedArray typedArray
         5: .line 477
            aload 3 /* typedArray */
            aload 1 /* view */
            invokevirtual com.oracle.truffle.js.runtime.array.TypedArray.lengthInt:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            aload 3 /* typedArray */
            invokevirtual com.oracle.truffle.js.runtime.array.TypedArray.bytesPerElement:()I
            imul
            istore 4 /* length */
        start local 4 // int length
         6: .line 478
            aload 3 /* typedArray */
            invokevirtual com.oracle.truffle.js.runtime.array.TypedArray.getFactory:()Lcom/oracle/truffle/js/runtime/array/TypedArrayFactory;
            invokestatic com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag.fromFactory:(Lcom/oracle/truffle/js/runtime/array/TypedArrayFactory;)Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;
            astore 5 /* tag */
        start local 5 // com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag tag
         7: .line 479
            aload 0 /* this */
            aload 5 /* tag */
            iload 2 /* offset */
            iload 4 /* length */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSArrayBufferView:(Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;II)V
        end local 5 // com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag tag
        end local 4 // int length
        end local 3 // com.oracle.truffle.js.runtime.array.TypedArray typedArray
        end local 2 // int offset
         8: .line 481
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.object.DynamicObject view
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    9     1        view  Lcom/oracle/truffle/api/object/DynamicObject;
            4    8     2      offset  I
            5    8     3  typedArray  Lcom/oracle/truffle/js/runtime/array/TypedArray;
            6    8     4      length  I
            7    8     5         tag  Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;
    MethodParameters:
      Name  Flags
      view  

  private void writeJSDataView(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject view
         0: .line 484
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.treatArrayBufferViewsAsHostObjects:Z
            ifeq 4
         1: .line 485
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.HOST_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         2: .line 486
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.delegate:J
            aload 1 /* view */
            invokestatic com.oracle.truffle.trufflenode.NativeAccess.writeHostObject:(JLjava/lang/Object;)V
         3: .line 487
            goto 7
         4: .line 488
      StackMap locals:
      StackMap stack:
            aload 1 /* view */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSDataView.typedArrayGetOffset:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            istore 2 /* offset */
        start local 2 // int offset
         5: .line 489
            aload 1 /* view */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSDataView.typedArrayGetLength:(Lcom/oracle/truffle/api/object/DynamicObject;)I
            istore 3 /* length */
        start local 3 // int length
         6: .line 490
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag.DATA_VIEW:Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;
            iload 2 /* offset */
            iload 3 /* length */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeJSArrayBufferView:(Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;II)V
        end local 3 // int length
        end local 2 // int offset
         7: .line 492
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.object.DynamicObject view
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    8     1    view  Lcom/oracle/truffle/api/object/DynamicObject;
            5    7     2  offset  I
            6    7     3  length  I
    MethodParameters:
      Name  Flags
      view  

  private void writeJSArrayBufferView(com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag, int, int);
    descriptor: (Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag tag
        start local 2 // int offset
        start local 3 // int length
         0: .line 495
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.ARRAY_BUFFER_VIEW:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         1: .line 496
            aload 0 /* this */
            aload 1 /* tag */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;)V
         2: .line 497
            aload 0 /* this */
            iload 2 /* offset */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         3: .line 498
            aload 0 /* this */
            iload 3 /* length */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
         4: .line 499
            return
        end local 3 // int length
        end local 2 // int offset
        end local 1 // com.oracle.truffle.trufflenode.serialization.ArrayBufferViewTag tag
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    5     1     tag  Lcom/oracle/truffle/trufflenode/serialization/ArrayBufferViewTag;
            0    5     2  offset  I
            0    5     3  length  I
    MethodParameters:
        Name  Flags
      tag     
      offset  
      length  

  private void writeBigIntContents(com.oracle.truffle.js.runtime.BigInt);
    descriptor: (Lcom/oracle/truffle/js/runtime/BigInt;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=11, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.js.runtime.BigInt value
         0: .line 502
            aload 1 /* value */
            invokevirtual com.oracle.truffle.js.runtime.BigInt.bigIntegerValue:()Ljava/math/BigInteger;
            astore 2 /* bigInteger */
        start local 2 // java.math.BigInteger bigInteger
         1: .line 503
            aload 2 /* bigInteger */
            invokevirtual java.math.BigInteger.signum:()I
            iconst_m1
            if_icmpne 2
            iconst_1
            goto 3
      StackMap locals: java.math.BigInteger
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 3 /* negative */
        start local 3 // boolean negative
         4: .line 504
            iload 3 /* negative */
            ifeq 6
         5: .line 505
            aload 2 /* bigInteger */
            invokevirtual java.math.BigInteger.negate:()Ljava/math/BigInteger;
            astore 2 /* bigInteger */
         6: .line 507
      StackMap locals: int
      StackMap stack:
            aload 2 /* bigInteger */
            invokevirtual java.math.BigInteger.bitLength:()I
            istore 4 /* bitLength */
        start local 4 // int bitLength
         7: .line 508
            iload 4 /* bitLength */
            bipush 63
            iadd
            bipush 64
            idiv
            istore 5 /* digits */
        start local 5 // int digits
         8: .line 509
            iload 5 /* digits */
            bipush 8
            imul
            istore 6 /* bytes */
        start local 6 // int bytes
         9: .line 510
            iload 6 /* bytes */
            istore 7 /* bitfield */
        start local 7 // int bitfield
        10: .line 511
            iload 7 /* bitfield */
            iconst_1
            ishl
            istore 7 /* bitfield */
        11: .line 512
            iload 3 /* negative */
            ifeq 13
        12: .line 513
            iinc 7 /* bitfield */ 1
        13: .line 515
      StackMap locals: com.oracle.truffle.trufflenode.serialization.Serializer com.oracle.truffle.js.runtime.BigInt java.math.BigInteger int int int int int
      StackMap stack:
            aload 0 /* this */
            iload 7 /* bitfield */
            i2l
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeVarInt:(J)V
        14: .line 516
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        15: goto 26
        16: .line 517
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 9 /* b */
        start local 9 // byte b
        17: .line 518
            bipush 8
            iload 8 /* i */
            iconst_1
            iadd
            imul
            iconst_1
            isub
            istore 10 /* bit */
        start local 10 // int bit
        18: goto 23
        19: .line 519
      StackMap locals: int int
      StackMap stack:
            iload 9 /* b */
            iconst_1
            ishl
            i2b
            istore 9 /* b */
        20: .line 520
            aload 2 /* bigInteger */
            iload 10 /* bit */
            invokevirtual java.math.BigInteger.testBit:(I)Z
            ifeq 22
        21: .line 521
            iload 9 /* b */
            iconst_1
            iadd
            i2b
            istore 9 /* b */
        22: .line 518
      StackMap locals:
      StackMap stack:
            iinc 10 /* bit */ -1
      StackMap locals:
      StackMap stack:
        23: iload 10 /* bit */
            bipush 8
            iload 8 /* i */
            imul
            if_icmpge 19
        end local 10 // int bit
        24: .line 524
            aload 0 /* this */
            iload 9 /* b */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeByte:(B)V
        end local 9 // byte b
        25: .line 516
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 8 /* i */
            iload 6 /* bytes */
            if_icmplt 16
        end local 8 // int i
        27: .line 526
            return
        end local 7 // int bitfield
        end local 6 // int bytes
        end local 5 // int digits
        end local 4 // int bitLength
        end local 3 // boolean negative
        end local 2 // java.math.BigInteger bigInteger
        end local 1 // com.oracle.truffle.js.runtime.BigInt value
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   28     0        this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   28     1       value  Lcom/oracle/truffle/js/runtime/BigInt;
            1   28     2  bigInteger  Ljava/math/BigInteger;
            4   28     3    negative  Z
            7   28     4   bitLength  I
            8   28     5      digits  I
            9   28     6       bytes  I
           10   28     7    bitfield  I
           15   27     8           i  I
           17   25     9           b  B
           18   24    10         bit  I
    MethodParameters:
       Name  Flags
      value  

  private void writeJSError(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject error
         0: .line 529
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.ERROR:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         1: .line 530
            aload 0 /* this */
            aload 1 /* error */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeErrorTypeTag:(Lcom/oracle/truffle/api/object/DynamicObject;)V
         2: .line 532
            aload 1 /* error */
            ldc "message"
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getOwnProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/objects/PropertyDescriptor;
            astore 2 /* desc */
        start local 2 // com.oracle.truffle.js.runtime.objects.PropertyDescriptor desc
         3: .line 533
            aload 2 /* desc */
            ifnull 7
            aload 2 /* desc */
            invokevirtual com.oracle.truffle.js.runtime.objects.PropertyDescriptor.isDataDescriptor:()Z
            ifeq 7
         4: .line 534
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.MESSAGE:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;)V
         5: .line 535
            aload 2 /* desc */
            invokevirtual com.oracle.truffle.js.runtime.objects.PropertyDescriptor.getValue:()Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 3 /* message */
        start local 3 // java.lang.String message
         6: .line 536
            aload 0 /* this */
            aload 3 /* message */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeString:(Ljava/lang/String;)V
        end local 3 // java.lang.String message
         7: .line 539
      StackMap locals: com.oracle.truffle.js.runtime.objects.PropertyDescriptor
      StackMap stack:
            aload 1 /* error */
            ldc "stack"
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* stack */
        start local 3 // java.lang.Object stack
         8: .line 540
            aload 3 /* stack */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isString:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 541
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.STACK:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;)V
        10: .line 542
            aload 0 /* this */
            aload 3 /* stack */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toStringIsString:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeString:(Ljava/lang/String;)V
        11: .line 545
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.END:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;)V
        12: .line 546
            return
        end local 3 // java.lang.Object stack
        end local 2 // com.oracle.truffle.js.runtime.objects.PropertyDescriptor desc
        end local 1 // com.oracle.truffle.api.object.DynamicObject error
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   13     1    error  Lcom/oracle/truffle/api/object/DynamicObject;
            3   13     2     desc  Lcom/oracle/truffle/js/runtime/objects/PropertyDescriptor;
            6    7     3  message  Ljava/lang/String;
            8   13     3    stack  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      error  

  private void writeErrorTypeTag(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // com.oracle.truffle.api.object.DynamicObject error
         0: .line 549
            aload 1 /* error */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSError.getException:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/GraalJSException;
            astore 2 /* exception */
        start local 2 // java.lang.Throwable exception
         1: .line 550
            getstatic com.oracle.truffle.js.runtime.JSErrorType.Error:Lcom/oracle/truffle/js/runtime/JSErrorType;
            astore 3 /* errorType */
        start local 3 // com.oracle.truffle.js.runtime.JSErrorType errorType
         2: .line 551
            aload 2 /* exception */
            instanceof com.oracle.truffle.js.runtime.JSException
            ifeq 4
         3: .line 552
            aload 2 /* exception */
            checkcast com.oracle.truffle.js.runtime.JSException
            invokevirtual com.oracle.truffle.js.runtime.JSException.getErrorType:()Lcom/oracle/truffle/js/runtime/JSErrorType;
            astore 3 /* errorType */
         4: .line 555
      StackMap locals: java.lang.Throwable com.oracle.truffle.js.runtime.JSErrorType
      StackMap stack:
            invokestatic com.oracle.truffle.trufflenode.serialization.Serializer.$SWITCH_TABLE$com$oracle$truffle$js$runtime$JSErrorType:()[I
            aload 3 /* errorType */
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            iaload
            tableswitch { // 2 - 7
                    2: 5
                    3: 7
                    4: 9
                    5: 11
                    6: 13
                    7: 15
              default: 17
          }
         5: .line 557
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.EVAL_ERROR:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
         6: .line 558
            goto 19
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
         7: .line 560
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.RANGE_ERROR:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
         8: .line 561
            goto 19
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
         9: .line 563
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.REFERENCE_ERROR:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        10: .line 564
            goto 19
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        11: .line 566
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.SYNTAX_ERROR:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        12: .line 567
            goto 19
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        13: .line 569
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.TYPE_ERROR:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        14: .line 570
            goto 19
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        15: .line 572
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.trufflenode.serialization.ErrorTag.URI_ERROR:Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        16: .line 573
            goto 19
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        17: .line 575
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* tag */
        start local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        18: .line 576
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$assertionsDisabled:Z
            ifne 19
            aload 3 /* errorType */
            getstatic com.oracle.truffle.js.runtime.JSErrorType.Error:Lcom/oracle/truffle/js/runtime/JSErrorType;
            if_acmpeq 19
            aload 3 /* errorType */
            getstatic com.oracle.truffle.js.runtime.JSErrorType.AggregateError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            if_acmpeq 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 579
      StackMap locals: com.oracle.truffle.trufflenode.serialization.ErrorTag
      StackMap stack:
            aload 4 /* tag */
            ifnull 21
        20: .line 580
            aload 0 /* this */
            aload 4 /* tag */
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;)V
        21: .line 582
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.oracle.truffle.trufflenode.serialization.ErrorTag tag
        end local 3 // com.oracle.truffle.js.runtime.JSErrorType errorType
        end local 2 // java.lang.Throwable exception
        end local 1 // com.oracle.truffle.api.object.DynamicObject error
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   22     0       this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0   22     1      error  Lcom/oracle/truffle/api/object/DynamicObject;
            1   22     2  exception  Ljava/lang/Throwable;
            2   22     3  errorType  Lcom/oracle/truffle/js/runtime/JSErrorType;
            6    7     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
            8    9     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
           10   11     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
           12   13     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
           14   15     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
           16   17     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
           18   22     4        tag  Lcom/oracle/truffle/trufflenode/serialization/ErrorTag;
    MethodParameters:
       Name  Flags
      error  

  private void writeHostObject(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.lang.Object object
         0: .line 585
            aload 0 /* this */
            getstatic com.oracle.truffle.trufflenode.serialization.SerializationTag.HOST_OBJECT:Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;
            invokevirtual com.oracle.truffle.trufflenode.serialization.Serializer.writeTag:(Lcom/oracle/truffle/trufflenode/serialization/SerializationTag;)V
         1: .line 586
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.delegate:J
            aload 1 /* object */
            invokestatic com.oracle.truffle.trufflenode.NativeAccess.writeHostObject:(JLjava/lang/Object;)V
         2: .line 587
            return
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1  object  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      object  

  public void transferArrayBuffer(int, java.lang.Object);
    descriptor: (ILjava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // int id
        start local 2 // java.lang.Object arrayBuffer
         0: .line 590
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.transferMap:Ljava/util/Map;
            aload 2 /* arrayBuffer */
            iload 1 /* id */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 591
            return
        end local 2 // java.lang.Object arrayBuffer
        end local 1 // int id
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    2     1           id  I
            0    2     2  arrayBuffer  Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      id           
      arrayBuffer  

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
         0: .line 594
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ireturn
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;

  public void release(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.nio.ByteBuffer targetBuffer
         0: .line 598
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/ByteBuffer;
            pop
         1: .line 599
            aload 1 /* targetBuffer */
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.buffer:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
         2: .line 600
            return
        end local 1 // java.nio.ByteBuffer targetBuffer
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    3     1  targetBuffer  Ljava/nio/ByteBuffer;
    MethodParameters:
              Name  Flags
      targetBuffer  

  private void assignId(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
        start local 1 // java.lang.Object object
         0: .line 603
            aload 0 /* this */
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.objectMap:Ljava/util/Map;
            aload 1 /* object */
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.trufflenode.serialization.Serializer.nextId:I
            dup_x1
            iconst_1
            iadd
            putfield com.oracle.truffle.trufflenode.serialization.Serializer.nextId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 604
            return
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.trufflenode.serialization.Serializer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/trufflenode/serialization/Serializer;
            0    2     1  object  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      object  

  static int[] $SWITCH_TABLE$com$oracle$truffle$js$runtime$JSErrorType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 90
            getstatic com.oracle.truffle.trufflenode.serialization.Serializer.$SWITCH_TABLE$com$oracle$truffle$js$runtime$JSErrorType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.oracle.truffle.js.runtime.JSErrorType.values:()[Lcom/oracle/truffle/js/runtime/JSErrorType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.AggregateError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            bipush 8
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.Error:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.EvalError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            iconst_2
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.RangeError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            iconst_3
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.ReferenceError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            iconst_4
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.SyntaxError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            iconst_5
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.TypeError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            bipush 6
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic com.oracle.truffle.js.runtime.JSErrorType.URIError:Lcom/oracle/truffle/js/runtime/JSErrorType;
            invokevirtual com.oracle.truffle.js.runtime.JSErrorType.ordinal:()I
            bipush 7
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            dup
            putstatic com.oracle.truffle.trufflenode.serialization.Serializer.$SWITCH_TABLE$com$oracle$truffle$js$runtime$JSErrorType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
}
SourceFile: "Serializer.java"
InnerClasses:
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public abstract Cursor = com.oracle.truffle.js.runtime.util.JSHashMap$Cursor of com.oracle.truffle.js.runtime.util.JSHashMap