final class com.oracle.truffle.object.TriePropertyMap extends com.oracle.truffle.object.PropertyMap implements com.oracle.truffle.object.LinkedImmutableMap<java.lang.Object, com.oracle.truffle.api.object.Property>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.object.TriePropertyMap
  super_class: com.oracle.truffle.object.PropertyMap
{
  private static final com.oracle.truffle.object.TriePropertyMap EMPTY;
    descriptor: Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean VERIFY;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private final int size;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.object.TrieNode<java.lang.Object, com.oracle.truffle.api.object.Property, com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry> root;
    descriptor: Lcom/oracle/truffle/object/TrieNode;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/oracle/truffle/object/TrieNode<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;>;

  private final com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry head;
    descriptor: Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry tail;
    descriptor: Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 57
            ldc Lcom/oracle/truffle/object/TriePropertyMap;
            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.object.TriePropertyMap.$assertionsDisabled:Z
         3: .line 59
            new com.oracle.truffle.object.TriePropertyMap
            dup
            iconst_0
            invokestatic com.oracle.truffle.object.TrieNode.empty:()Lcom/oracle/truffle/object/TrieNode;
            aconst_null
            aconst_null
            invokespecial com.oracle.truffle.object.TriePropertyMap.<init>:(ILcom/oracle/truffle/object/TrieNode;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;)V
            putstatic com.oracle.truffle.object.TriePropertyMap.EMPTY:Lcom/oracle/truffle/object/TriePropertyMap;
         4: .line 62
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int hash(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object key
         0: .line 142
            aload 0 /* key */
            invokevirtual java.lang.Object.hashCode:()I
            ireturn
        end local 0 // java.lang.Object key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  static java.lang.Object key(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.Property property
         0: .line 146
            aload 0 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            areturn
        end local 0 // com.oracle.truffle.api.object.Property property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  property  Lcom/oracle/truffle/api/object/Property;
    MethodParameters:
          Name  Flags
      property  

  private void <init>(int, com.oracle.truffle.object.TrieNode<java.lang.Object, com.oracle.truffle.api.object.Property, com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry>, com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry, com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry);
    descriptor: (ILcom/oracle/truffle/object/TrieNode;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // int size
        start local 2 // com.oracle.truffle.object.TrieNode root
        start local 3 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry head
        start local 4 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry tail
         0: .line 149
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.PropertyMap.<init>:()V
         1: .line 150
            aload 0 /* this */
            iload 1 /* size */
            putfield com.oracle.truffle.object.TriePropertyMap.size:I
         2: .line 151
            aload 0 /* this */
            aload 2 /* root */
            putfield com.oracle.truffle.object.TriePropertyMap.root:Lcom/oracle/truffle/object/TrieNode;
         3: .line 152
            aload 0 /* this */
            aload 3 /* head */
            putfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
         4: .line 153
            aload 0 /* this */
            aload 4 /* tail */
            putfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
         5: .line 154
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 6
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.verify:()Z
            ifne 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 155
      StackMap locals: com.oracle.truffle.object.TriePropertyMap int com.oracle.truffle.object.TrieNode com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            return
        end local 4 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry tail
        end local 3 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry head
        end local 2 // com.oracle.truffle.object.TrieNode root
        end local 1 // int size
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    7     1  size  I
            0    7     2  root  Lcom/oracle/truffle/object/TrieNode<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;>;
            0    7     3  head  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            0    7     4  tail  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    Signature: (ILcom/oracle/truffle/object/TrieNode<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;>;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;)V
    MethodParameters:
      Name  Flags
      size  
      root  
      head  
      tail  

  private boolean verify();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 158
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 3
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnonnull 1
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnull 3
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            ifeq 2
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnull 2
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnonnull 3
      StackMap locals:
      StackMap stack:
         2: new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "size="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", head="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", tail="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         3: .line 159
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 4
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnull 4
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 160
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 5
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnull 5
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpeq 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 172
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/object/TriePropertyMap;

  public static com.oracle.truffle.object.TriePropertyMap empty();
    descriptor: ()Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 177
            getstatic com.oracle.truffle.object.TriePropertyMap.EMPTY:Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 182
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            ireturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;

  public boolean isEmpty();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 187
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.size:()I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/TriePropertyMap;

  public boolean containsKey(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object key
         0: .line 192
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    2     1   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  public boolean containsValue(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object value
         0: .line 197
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.reverseOrderEntrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.oracle.truffle.object.TriePropertyMap java.lang.Object top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         2: .line 198
            aload 1 /* value */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 4
         3: .line 199
            iconst_1
            ireturn
        end local 2 // java.util.Map$Entry entry
         4: .line 197
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 202
            iconst_0
            ireturn
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    6     1  value  Ljava/lang/Object;
            2    4     2  entry  Ljava/util/Map$Entry<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;>;
    MethodParameters:
       Name  Flags
      value  

  public com.oracle.truffle.api.object.Property get(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object key
         0: .line 207
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 2 /* entry */
        start local 2 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry entry
         1: .line 208
            aload 2 /* entry */
            ifnonnull 2
            aconst_null
            goto 3
      StackMap locals: com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
         2: aload 2 /* entry */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getValue:()Lcom/oracle/truffle/api/object/Property;
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.object.Property
         3: areturn
        end local 2 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry entry
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    4     1    key  Ljava/lang/Object;
            1    4     2  entry  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    MethodParameters:
      Name  Flags
      key   

  public com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry getEntry(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object key
         0: .line 213
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.root:Lcom/oracle/truffle/object/TrieNode;
            aload 1 /* key */
            aload 1 /* key */
            invokestatic com.oracle.truffle.object.TriePropertyMap.hash:(Ljava/lang/Object;)I
            invokevirtual com.oracle.truffle.object.TrieNode.find:(Ljava/lang/Object;I)Ljava/util/Map$Entry;
            checkcast com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
            astore 2 /* entry */
        start local 2 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry entry
         1: .line 214
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 2
            aload 2 /* entry */
            ifnull 2
            aload 2 /* entry */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getKey:()Ljava/lang/Object;
            aload 1 /* key */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 215
      StackMap locals: com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 2 /* entry */
            areturn
        end local 2 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry entry
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    3     1    key  Ljava/lang/Object;
            1    3     2  entry  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    MethodParameters:
      Name  Flags
      key   

  public com.oracle.truffle.object.TriePropertyMap putCopy(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // com.oracle.truffle.api.object.Property value
         0: .line 220
            aload 1 /* value */
            invokestatic com.oracle.truffle.object.TriePropertyMap.key:(Lcom/oracle/truffle/api/object/Property;)Ljava/lang/Object;
            astore 2 /* key */
        start local 2 // java.lang.Object key
         1: .line 221
            aload 0 /* this */
            aload 2 /* key */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.copyAndPutImpl:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.Property value
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    2     1  value  Lcom/oracle/truffle/api/object/Property;
            1    2     2    key  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      value  

  public com.oracle.truffle.object.TriePropertyMap copyAndPut(java.lang.Object, com.oracle.truffle.api.object.Property);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.api.object.Property value
         0: .line 226
            aload 2 /* value */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            aload 1 /* key */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 227
            new java.lang.IllegalArgumentException
            dup
            ldc "Key must equal extracted key of property."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.copyAndPutImpl:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
        end local 2 // com.oracle.truffle.api.object.Property value
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    3     1    key  Ljava/lang/Object;
            0    3     2  value  Lcom/oracle/truffle/api/object/Property;
    MethodParameters:
       Name  Flags
      key    
      value  

  private com.oracle.truffle.object.TriePropertyMap copyAndPutImpl(java.lang.Object, com.oracle.truffle.api.object.Property);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.api.object.Property value
         0: .line 234
            aload 1 /* key */
            invokestatic com.oracle.truffle.object.TriePropertyMap.hash:(Ljava/lang/Object;)I
            istore 3 /* hash */
        start local 3 // int hash
         1: .line 235
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.root:Lcom/oracle/truffle/object/TrieNode;
            aload 1 /* key */
            iload 3 /* hash */
            invokevirtual com.oracle.truffle.object.TrieNode.find:(Ljava/lang/Object;I)Ljava/util/Map$Entry;
            checkcast com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
            astore 4 /* existing */
        start local 4 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existing
         2: .line 236
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.root:Lcom/oracle/truffle/object/TrieNode;
            astore 5 /* newRoot */
        start local 5 // com.oracle.truffle.object.TrieNode newRoot
         3: .line 241
            aload 4 /* existing */
            ifnonnull 22
         4: .line 242
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            iconst_1
            iadd
            istore 8 /* newSize */
        start local 8 // int newSize
         5: .line 243
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnonnull 10
         6: .line 245
            new com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
            dup
            aload 2 /* value */
            aconst_null
            aconst_null
            invokespecial com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.<init>:(Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Ljava/lang/Object;)V
            astore 9 /* newEntry */
        start local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newEntry
         7: .line 246
            aload 9 /* newEntry */
            dup
            astore 6 /* newTail */
        start local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
         8: astore 7 /* newHead */
        start local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
         9: .line 247
            goto 37
        end local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newEntry
        end local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        end local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
        10: .line 249
      StackMap locals: com.oracle.truffle.object.TriePropertyMap java.lang.Object com.oracle.truffle.api.object.Property int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TrieNode top top int
      StackMap stack:
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 12
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnull 11
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnonnull 12
      StackMap locals:
      StackMap stack:
        11: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 250
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getKey:()Ljava/lang/Object;
            astore 10 /* tailKey */
        start local 10 // java.lang.Object tailKey
        13: .line 251
            new com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
            dup
            aload 2 /* value */
            aload 10 /* tailKey */
            aconst_null
            invokespecial com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.<init>:(Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Ljava/lang/Object;)V
            astore 9 /* newEntry */
        start local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newEntry
        14: .line 253
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            aload 1 /* key */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.withNextKey:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 11 /* tailWithNext */
        start local 11 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry tailWithNext
        15: .line 254
            aload 5 /* newRoot */
            aload 10 /* tailKey */
            aload 10 /* tailKey */
            invokestatic com.oracle.truffle.object.TriePropertyMap.hash:(Ljava/lang/Object;)I
            aload 11 /* tailWithNext */
            invokevirtual com.oracle.truffle.object.TrieNode.put:(Ljava/lang/Object;ILjava/util/Map$Entry;)Lcom/oracle/truffle/object/TrieNode;
            astore 5 /* newRoot */
        16: .line 255
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpne 19
        17: .line 256
            aload 11 /* tailWithNext */
            astore 7 /* newHead */
        start local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        18: .line 257
            goto 20
        end local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        19: .line 258
      StackMap locals: com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry java.lang.Object com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 7 /* newHead */
        start local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        20: .line 260
      StackMap locals: com.oracle.truffle.object.TriePropertyMap java.lang.Object com.oracle.truffle.api.object.Property int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TrieNode top com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry java.lang.Object com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 9 /* newEntry */
            astore 6 /* newTail */
        end local 11 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry tailWithNext
        end local 10 // java.lang.Object tailKey
        start local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
        21: .line 262
            goto 37
        end local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newEntry
        end local 8 // int newSize
        end local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        end local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
      StackMap locals: com.oracle.truffle.object.TriePropertyMap java.lang.Object com.oracle.truffle.api.object.Property int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TrieNode
      StackMap stack:
        22: aload 2 /* value */
            aload 4 /* existing */
            getfield com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.value:Lcom/oracle/truffle/api/object/Property;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 24
        23: .line 263
            aload 0 /* this */
            areturn
        24: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            istore 8 /* newSize */
        start local 8 // int newSize
        25: .line 267
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 7 /* newHead */
        start local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        26: .line 268
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 6 /* newTail */
        start local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
        27: .line 270
            aload 4 /* existing */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.withValue:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 9 /* newEntry */
        start local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newEntry
        28: .line 271
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 29
            aload 9 /* newEntry */
            aload 4 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.equals:(Ljava/lang/Object;)Z
            ifeq 29
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        29: .line 272
      StackMap locals: com.oracle.truffle.object.TriePropertyMap java.lang.Object com.oracle.truffle.api.object.Property int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TrieNode com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 4 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getPrevKey:()Ljava/lang/Object;
            ifnull 31
        30: .line 273
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 33
            aload 0 /* this */
            aload 4 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getPrevKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getNextKey:()Ljava/lang/Object;
            aload 1 /* key */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 33
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        31: .line 275
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 32
            aload 4 /* existing */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpeq 32
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        32: .line 276
      StackMap locals:
      StackMap stack:
            aload 9 /* newEntry */
            astore 7 /* newHead */
        33: .line 278
      StackMap locals:
      StackMap stack:
            aload 4 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getNextKey:()Ljava/lang/Object;
            ifnull 35
        34: .line 279
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 37
            aload 0 /* this */
            aload 4 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getNextKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getPrevKey:()Ljava/lang/Object;
            aload 1 /* key */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 37
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        35: .line 281
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 36
            aload 4 /* existing */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpeq 36
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        36: .line 282
      StackMap locals:
      StackMap stack:
            aload 9 /* newEntry */
            astore 6 /* newTail */
        37: .line 285
      StackMap locals:
      StackMap stack:
            aload 5 /* newRoot */
            aload 1 /* key */
            iload 3 /* hash */
            aload 9 /* newEntry */
            invokevirtual com.oracle.truffle.object.TrieNode.put:(Ljava/lang/Object;ILjava/util/Map$Entry;)Lcom/oracle/truffle/object/TrieNode;
            astore 5 /* newRoot */
        38: .line 286
            new com.oracle.truffle.object.TriePropertyMap
            dup
            iload 8 /* newSize */
            aload 5 /* newRoot */
            aload 7 /* newHead */
            aload 6 /* newTail */
            invokespecial com.oracle.truffle.object.TriePropertyMap.<init>:(ILcom/oracle/truffle/object/TrieNode;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;)V
            areturn
        end local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newEntry
        end local 8 // int newSize
        end local 7 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        end local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
        end local 5 // com.oracle.truffle.object.TrieNode newRoot
        end local 4 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existing
        end local 3 // int hash
        end local 2 // com.oracle.truffle.api.object.Property value
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   39     0          this  Lcom/oracle/truffle/object/TriePropertyMap;
            0   39     1           key  Ljava/lang/Object;
            0   39     2         value  Lcom/oracle/truffle/api/object/Property;
            1   39     3          hash  I
            2   39     4      existing  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            3   39     5       newRoot  Lcom/oracle/truffle/object/TrieNode<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;>;
            8   10     6       newTail  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           21   22     6       newTail  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           27   39     6       newTail  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            9   10     7       newHead  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           18   19     7       newHead  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           20   22     7       newHead  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           26   39     7       newHead  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            5   22     8       newSize  I
           25   39     8       newSize  I
            7   10     9      newEntry  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           14   22     9      newEntry  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           28   39     9      newEntry  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           13   21    10       tailKey  Ljava/lang/Object;
           15   21    11  tailWithNext  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    MethodParameters:
       Name  Flags
      key    
      value  

  public com.oracle.truffle.object.TriePropertyMap removeCopy(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // com.oracle.truffle.api.object.Property value
         0: .line 291
            aload 1 /* value */
            invokestatic com.oracle.truffle.object.TriePropertyMap.key:(Lcom/oracle/truffle/api/object/Property;)Ljava/lang/Object;
            astore 2 /* key */
        start local 2 // java.lang.Object key
         1: .line 292
            aload 0 /* this */
            aload 2 /* key */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.copyAndRemove:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.Property value
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    2     1  value  Lcom/oracle/truffle/api/object/Property;
            1    2     2    key  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      value  

  public com.oracle.truffle.object.TriePropertyMap copyAndRemove(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // java.lang.Object key
         0: .line 297
            aload 1 /* key */
            invokestatic com.oracle.truffle.object.TriePropertyMap.hash:(Ljava/lang/Object;)I
            istore 2 /* hash */
        start local 2 // int hash
         1: .line 298
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.root:Lcom/oracle/truffle/object/TrieNode;
            aload 1 /* key */
            iload 2 /* hash */
            invokevirtual com.oracle.truffle.object.TrieNode.find:(Ljava/lang/Object;I)Ljava/util/Map$Entry;
            checkcast com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
            astore 3 /* existing */
        start local 3 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existing
         2: .line 299
            aload 3 /* existing */
            ifnonnull 4
         3: .line 300
            aload 0 /* this */
            areturn
         4: .line 301
      StackMap locals: int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            iconst_1
            if_icmpne 6
         5: .line 302
            invokestatic com.oracle.truffle.object.TriePropertyMap.empty:()Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
         6: .line 304
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.root:Lcom/oracle/truffle/object/TrieNode;
            astore 4 /* newRoot */
        start local 4 // com.oracle.truffle.object.TrieNode newRoot
         7: .line 305
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 5 /* newHead */
        start local 5 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
         8: .line 306
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 6 /* newTail */
        start local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
         9: .line 307
            aload 3 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getPrevKey:()Ljava/lang/Object;
            ifnull 18
        10: .line 308
            aload 3 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getPrevKey:()Ljava/lang/Object;
            astore 7 /* prevKey */
        start local 7 // java.lang.Object prevKey
        11: .line 309
            aload 0 /* this */
            aload 7 /* prevKey */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 8 /* existingPrev */
        start local 8 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existingPrev
        12: .line 310
            aload 8 /* existingPrev */
            aload 3 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getNextKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.withNextKey:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 9 /* newPrev */
        start local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newPrev
        13: .line 311
            aload 4 /* newRoot */
            aload 7 /* prevKey */
            aload 7 /* prevKey */
            invokestatic com.oracle.truffle.object.TriePropertyMap.hash:(Ljava/lang/Object;)I
            aload 9 /* newPrev */
            invokevirtual com.oracle.truffle.object.TrieNode.put:(Ljava/lang/Object;ILjava/util/Map$Entry;)Lcom/oracle/truffle/object/TrieNode;
            astore 4 /* newRoot */
        14: .line 312
            aload 3 /* existing */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpne 16
        15: .line 313
            aload 9 /* newPrev */
            astore 6 /* newTail */
        16: .line 315
      StackMap locals: com.oracle.truffle.object.TriePropertyMap java.lang.Object int com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TrieNode com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry java.lang.Object com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 8 /* existingPrev */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpne 18
        17: .line 316
            aload 9 /* newPrev */
            astore 5 /* newHead */
        end local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newPrev
        end local 8 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existingPrev
        end local 7 // java.lang.Object prevKey
        18: .line 319
      StackMap locals:
      StackMap stack:
            aload 3 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getNextKey:()Ljava/lang/Object;
            ifnull 27
        19: .line 320
            aload 3 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getNextKey:()Ljava/lang/Object;
            astore 7 /* nextKey */
        start local 7 // java.lang.Object nextKey
        20: .line 321
            aload 0 /* this */
            aload 7 /* nextKey */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 8 /* existingNext */
        start local 8 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existingNext
        21: .line 322
            aload 8 /* existingNext */
            aload 3 /* existing */
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getPrevKey:()Ljava/lang/Object;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.withPrevKey:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            astore 9 /* newNext */
        start local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newNext
        22: .line 323
            aload 4 /* newRoot */
            aload 7 /* nextKey */
            aload 7 /* nextKey */
            invokestatic com.oracle.truffle.object.TriePropertyMap.hash:(Ljava/lang/Object;)I
            aload 9 /* newNext */
            invokevirtual com.oracle.truffle.object.TrieNode.put:(Ljava/lang/Object;ILjava/util/Map$Entry;)Lcom/oracle/truffle/object/TrieNode;
            astore 4 /* newRoot */
        23: .line 324
            aload 3 /* existing */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpne 25
        24: .line 325
            aload 9 /* newNext */
            astore 5 /* newHead */
        25: .line 327
      StackMap locals: java.lang.Object com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
      StackMap stack:
            aload 8 /* existingNext */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            if_acmpne 27
        26: .line 328
            aload 9 /* newNext */
            astore 6 /* newTail */
        end local 9 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newNext
        end local 8 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existingNext
        end local 7 // java.lang.Object nextKey
        27: .line 331
      StackMap locals:
      StackMap stack:
            aload 4 /* newRoot */
            aload 1 /* key */
            iload 2 /* hash */
            invokevirtual com.oracle.truffle.object.TrieNode.remove:(Ljava/lang/Object;I)Lcom/oracle/truffle/object/TrieNode;
            astore 4 /* newRoot */
        28: .line 332
            getstatic com.oracle.truffle.object.TriePropertyMap.$assertionsDisabled:Z
            ifne 29
            aload 4 /* newRoot */
            ifnonnull 29
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        29: .line 333
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.object.TriePropertyMap
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.size:I
            iconst_1
            isub
            aload 4 /* newRoot */
            aload 5 /* newHead */
            aload 6 /* newTail */
            invokespecial com.oracle.truffle.object.TriePropertyMap.<init>:(ILcom/oracle/truffle/object/TrieNode;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;)V
            areturn
        end local 6 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newTail
        end local 5 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry newHead
        end local 4 // com.oracle.truffle.object.TrieNode newRoot
        end local 3 // com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry existing
        end local 2 // int hash
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   30     0          this  Lcom/oracle/truffle/object/TriePropertyMap;
            0   30     1           key  Ljava/lang/Object;
            1   30     2          hash  I
            2   30     3      existing  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            7   30     4       newRoot  Lcom/oracle/truffle/object/TrieNode<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;>;
            8   30     5       newHead  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            9   30     6       newTail  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           11   18     7       prevKey  Ljava/lang/Object;
           12   18     8  existingPrev  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           13   18     9       newPrev  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           20   27     7       nextKey  Ljava/lang/Object;
           21   27     8  existingNext  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
           22   27     9       newNext  Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
    MethodParameters:
      Name  Flags
      key   

  public com.oracle.truffle.object.TriePropertyMap replaceCopy(com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
        start local 1 // com.oracle.truffle.api.object.Property oldValue
        start local 2 // com.oracle.truffle.api.object.Property newValue
         0: .line 338
            aload 0 /* this */
            aload 2 /* newValue */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.putCopy:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
        end local 2 // com.oracle.truffle.api.object.Property newValue
        end local 1 // com.oracle.truffle.api.object.Property oldValue
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/object/TriePropertyMap;
            0    1     1  oldValue  Lcom/oracle/truffle/api/object/Property;
            0    1     2  newValue  Lcom/oracle/truffle/api/object/Property;
    MethodParameters:
          Name  Flags
      oldValue  
      newValue  

  java.util.Iterator<java.util.Map$Entry<java.lang.Object, com.oracle.truffle.api.object.Property>> orderedEntryIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0000) 
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 342
            new com.oracle.truffle.object.LinkedImmutableMap$LinkedEntryIterator
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            iconst_1
            invokespecial com.oracle.truffle.object.LinkedImmutableMap$LinkedEntryIterator.<init>:(Lcom/oracle/truffle/object/LinkedImmutableMap;Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;Z)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;>;>;

  java.util.Iterator<java.util.Map$Entry<java.lang.Object, com.oracle.truffle.api.object.Property>> reverseOrderedEntryIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0000) 
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 346
            new com.oracle.truffle.object.LinkedImmutableMap$LinkedEntryIterator
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            iconst_0
            invokespecial com.oracle.truffle.object.LinkedImmutableMap$LinkedEntryIterator.<init>:(Lcom/oracle/truffle/object/LinkedImmutableMap;Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;Z)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Iterator<Ljava/util/Map$Entry<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;>;>;

  public java.util.Iterator<java.lang.Object> orderedKeyIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 351
            new com.oracle.truffle.object.LinkedImmutableMap$LinkedKeyIterator
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            iconst_1
            invokespecial com.oracle.truffle.object.LinkedImmutableMap$LinkedKeyIterator.<init>:(Lcom/oracle/truffle/object/LinkedImmutableMap;Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;Z)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Iterator<Ljava/lang/Object;>;

  public java.util.Iterator<java.lang.Object> reverseOrderedKeyIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 356
            new com.oracle.truffle.object.LinkedImmutableMap$LinkedKeyIterator
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            iconst_0
            invokespecial com.oracle.truffle.object.LinkedImmutableMap$LinkedKeyIterator.<init>:(Lcom/oracle/truffle/object/LinkedImmutableMap;Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;Z)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Iterator<Ljava/lang/Object;>;

  public java.util.Iterator<com.oracle.truffle.api.object.Property> orderedValueIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 361
            new com.oracle.truffle.object.LinkedImmutableMap$LinkedValueIterator
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.head:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            iconst_1
            invokespecial com.oracle.truffle.object.LinkedImmutableMap$LinkedValueIterator.<init>:(Lcom/oracle/truffle/object/LinkedImmutableMap;Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;Z)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;

  public java.util.Iterator<com.oracle.truffle.api.object.Property> reverseOrderedValueIterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 366
            new com.oracle.truffle.object.LinkedImmutableMap$LinkedValueIterator
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            iconst_0
            invokespecial com.oracle.truffle.object.LinkedImmutableMap$LinkedValueIterator.<init>:(Lcom/oracle/truffle/object/LinkedImmutableMap;Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;Z)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;

  public java.util.Set<java.util.Map$Entry<java.lang.Object, com.oracle.truffle.api.object.Property>> entrySet();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 371
            new com.oracle.truffle.object.TriePropertyMap$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.TriePropertyMap$1.<init>:(Lcom/oracle/truffle/object/TriePropertyMap;)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;>;>;

  public java.util.Set<java.lang.Object> keySet();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 386
            new com.oracle.truffle.object.TriePropertyMap$2
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.TriePropertyMap$2.<init>:(Lcom/oracle/truffle/object/TriePropertyMap;)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Set<Ljava/lang/Object;>;

  public java.util.Collection<com.oracle.truffle.api.object.Property> values();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 401
            new com.oracle.truffle.object.TriePropertyMap$3
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.TriePropertyMap$3.<init>:(Lcom/oracle/truffle/object/TriePropertyMap;)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Collection<Lcom/oracle/truffle/api/object/Property;>;

  public java.util.Set<java.util.Map$Entry<java.lang.Object, com.oracle.truffle.api.object.Property>> reverseOrderEntrySet();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 415
            new com.oracle.truffle.object.TriePropertyMap$4
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.TriePropertyMap$4.<init>:(Lcom/oracle/truffle/object/TriePropertyMap;)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;>;>;

  public java.util.Set<java.lang.Object> reverseOrderKeys();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 429
            new com.oracle.truffle.object.TriePropertyMap$5
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.TriePropertyMap$5.<init>:(Lcom/oracle/truffle/object/TriePropertyMap;)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Set<Ljava/lang/Object;>;

  public java.util.Set<com.oracle.truffle.api.object.Property> reverseOrderValues();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 443
            new com.oracle.truffle.object.TriePropertyMap$6
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.object.TriePropertyMap$6.<init>:(Lcom/oracle/truffle/object/TriePropertyMap;)V
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;
    Signature: ()Ljava/util/Set<Lcom/oracle/truffle/api/object/Property;>;

  public com.oracle.truffle.api.object.Property getLastProperty();
    descriptor: ()Lcom/oracle/truffle/api/object/Property;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 458
            aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield com.oracle.truffle.object.TriePropertyMap.tail:Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            invokevirtual com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry.getValue:()Lcom/oracle/truffle/api/object/Property;
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.object.Property
         2: areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/object/TriePropertyMap;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.object.TriePropertyMap this
         0: .line 463
            aload 0 /* this */
            invokevirtual com.oracle.truffle.object.TriePropertyMap.values:()Ljava/util/Collection;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.object.TriePropertyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/object/TriePropertyMap;

  public com.oracle.truffle.object.ImmutableMap copyAndPut(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Lcom/oracle/truffle/object/ImmutableMap;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Object
            aload 2
            checkcast com.oracle.truffle.api.object.Property
            invokevirtual com.oracle.truffle.object.TriePropertyMap.copyAndPut:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.object.PropertyMap removeCopy(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/PropertyMap;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.TriePropertyMap.removeCopy:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.Object get(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.TriePropertyMap.get:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.object.PropertyMap putCopy(com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/PropertyMap;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual com.oracle.truffle.object.TriePropertyMap.putCopy:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.object.ImmutableMap copyAndRemove(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/ImmutableMap;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Object
            invokevirtual com.oracle.truffle.object.TriePropertyMap.copyAndRemove:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.object.PropertyMap replaceCopy(com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
    descriptor: (Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/PropertyMap;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual com.oracle.truffle.object.TriePropertyMap.replaceCopy:(Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/TriePropertyMap;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.oracle.truffle.object.LinkedImmutableMap$LinkedEntry getEntry(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/object/LinkedImmutableMap$LinkedEntry;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Object
            invokevirtual com.oracle.truffle.object.TriePropertyMap.getEntry:(Ljava/lang/Object;)Lcom/oracle/truffle/object/TriePropertyMap$LinkedPropertyEntry;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/LinkedImmutableMap<Ljava/lang/Object;Lcom/oracle/truffle/api/object/Property;>;
SourceFile: "TriePropertyMap.java"
NestMembers:
  com.oracle.truffle.object.TriePropertyMap$1  com.oracle.truffle.object.TriePropertyMap$2  com.oracle.truffle.object.TriePropertyMap$3  com.oracle.truffle.object.TriePropertyMap$4  com.oracle.truffle.object.TriePropertyMap$5  com.oracle.truffle.object.TriePropertyMap$6  com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry
InnerClasses:
  public abstract LinkedEntry = com.oracle.truffle.object.LinkedImmutableMap$LinkedEntry of com.oracle.truffle.object.LinkedImmutableMap
  public final LinkedEntryIterator = com.oracle.truffle.object.LinkedImmutableMap$LinkedEntryIterator of com.oracle.truffle.object.LinkedImmutableMap
  public final LinkedKeyIterator = com.oracle.truffle.object.LinkedImmutableMap$LinkedKeyIterator of com.oracle.truffle.object.LinkedImmutableMap
  public final LinkedValueIterator = com.oracle.truffle.object.LinkedImmutableMap$LinkedValueIterator of com.oracle.truffle.object.LinkedImmutableMap
  com.oracle.truffle.object.TriePropertyMap$1
  com.oracle.truffle.object.TriePropertyMap$2
  com.oracle.truffle.object.TriePropertyMap$3
  com.oracle.truffle.object.TriePropertyMap$4
  com.oracle.truffle.object.TriePropertyMap$5
  com.oracle.truffle.object.TriePropertyMap$6
  final LinkedPropertyEntry = com.oracle.truffle.object.TriePropertyMap$LinkedPropertyEntry of com.oracle.truffle.object.TriePropertyMap
  public abstract Entry = java.util.Map$Entry of java.util.Map