public interface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges extends com.oracle.truffle.regex.charset.SortedListOfRanges, java.lang.Iterable<com.oracle.truffle.regex.charset.Range>
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
  super_class: java.lang.Object
{
  public static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 52
            ldc Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            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.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public abstract <T extends com.oracle.truffle.regex.charset.SortedListOfRanges> T createEmpty();
    descriptor: ()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <T::Lcom/oracle/truffle/regex/charset/SortedListOfRanges;>()TT;

  public abstract <T extends com.oracle.truffle.regex.charset.SortedListOfRanges> T create(com.oracle.truffle.regex.charset.RangesBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <T::Lcom/oracle/truffle/regex/charset/SortedListOfRanges;>(Lcom/oracle/truffle/regex/charset/RangesBuffer;)TT;
    MethodParameters:
        Name  Flags
      buffer  

  public abstract <T extends com.oracle.truffle.regex.charset.SortedListOfRanges> T createInverse(com.oracle.truffle.regex.tregex.string.Encodings$Encoding);
    descriptor: (Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <T::Lcom/oracle/truffle/regex/charset/SortedListOfRanges;>(Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)TT;
    MethodParameters:
          Name  Flags
      encoding  

  public abstract com.oracle.truffle.regex.charset.RangesBuffer getBuffer1(com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                   Name  Flags
      compilationBuffer  

  public abstract com.oracle.truffle.regex.charset.RangesBuffer getBuffer2(com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                   Name  Flags
      compilationBuffer  

  public abstract com.oracle.truffle.regex.charset.RangesBuffer getBuffer3(com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                   Name  Flags
      compilationBuffer  

  public abstract com.oracle.truffle.regex.charset.RangesBuffer createTempBuffer();
    descriptor: ()Lcom/oracle/truffle/regex/charset/RangesBuffer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract boolean equalsBuffer(com.oracle.truffle.regex.charset.RangesBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      buffer  

  public <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> T createIntersection(T, com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        start local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
         0: .line 103
            aload 0 /* this */
            aload 1 /* o */
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getBuffer1:(Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createIntersection:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            areturn
        end local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
        end local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0    1     1                  o  TT;
            0    1     2  compilationBuffer  Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)TT;
    MethodParameters:
                   Name  Flags
      o                  
      compilationBuffer  

  public <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> T createIntersection(T, com.oracle.truffle.regex.charset.RangesBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        start local 2 // com.oracle.truffle.regex.charset.RangesBuffer tmp
         0: .line 111
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.isEmpty:()Z
            ifne 1
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.isEmpty:()Z
            ifeq 2
         1: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            areturn
         2: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            iconst_1
            if_icmpne 4
         3: .line 115
            aload 0 /* this */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createIntersectionSingleRange:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            areturn
         4: .line 117
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            iconst_1
            if_icmpne 6
         5: .line 118
            aload 1 /* o */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createIntersectionSingleRange:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            areturn
         6: .line 120
      StackMap locals:
      StackMap stack:
            aload 2 /* tmp */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.clear:()V
         7: .line 121
            iconst_0
            istore 3 /* ia */
        start local 3 // int ia
         8: goto 23
         9: .line 122
      StackMap locals: int
      StackMap stack:
            aload 1 /* o */
            aload 0 /* this */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.binarySearch:(I)I
            istore 4 /* search */
        start local 4 // int search
        10: .line 123
            aload 1 /* o */
            iload 4 /* search */
            aload 0 /* this */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.binarySearchExactMatch:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)Z
            ifeq 13
        11: .line 124
            aload 0 /* this */
            aload 2 /* tmp */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.addRangeTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;I)V
        12: .line 125
            goto 22
        13: .line 127
      StackMap locals: int
      StackMap stack:
            aload 1 /* o */
            iload 4 /* search */
            aload 0 /* this */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.binarySearchGetFirstIntersecting:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)I
            istore 5 /* firstIntersection */
        start local 5 // int firstIntersection
        14: .line 128
            iload 5 /* firstIntersection */
            istore 6 /* ib */
        start local 6 // int ib
        15: goto 21
        16: .line 129
      StackMap locals: int int
      StackMap stack:
            aload 1 /* o */
            iload 6 /* ib */
            aload 0 /* this */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.rightOf:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)Z
            ifeq 18
        17: .line 130
            goto 22
        18: .line 132
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 19
            aload 0 /* this */
            iload 3 /* ia */
            aload 1 /* o */
            iload 6 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.intersects:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)Z
            ifne 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 133
      StackMap locals:
      StackMap stack:
            aload 2 /* tmp */
            aload 0 /* this */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            aload 1 /* o */
            iload 6 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            invokestatic java.lang.Math.max:(II)I
            aload 0 /* this */
            iload 3 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            aload 1 /* o */
            iload 6 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            invokestatic java.lang.Math.min:(II)I
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        20: .line 128
            iinc 6 /* ib */ 1
      StackMap locals:
      StackMap stack:
        21: iload 6 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmplt 16
        end local 6 // int ib
        end local 5 // int firstIntersection
        end local 4 // int search
        22: .line 121
      StackMap locals:
      StackMap stack:
            iinc 3 /* ia */ 1
      StackMap locals:
      StackMap stack:
        23: iload 3 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmplt 9
        end local 3 // int ia
        24: .line 136
            aload 0 /* this */
            aload 2 /* tmp */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifeq 26
        25: .line 137
            aload 0 /* this */
            areturn
        26: .line 139
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            aload 2 /* tmp */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifeq 28
        27: .line 140
            aload 1 /* o */
            areturn
        28: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* tmp */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            areturn
        end local 2 // com.oracle.truffle.regex.charset.RangesBuffer tmp
        end local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   29     0               this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0   29     1                  o  TT;
            0   29     2                tmp  Lcom/oracle/truffle/regex/charset/RangesBuffer;
            8   24     3                 ia  I
           10   22     4             search  I
           14   22     5  firstIntersection  I
           15   22     6                 ib  I
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;Lcom/oracle/truffle/regex/charset/RangesBuffer;)TT;
    MethodParameters:
      Name  Flags
      o     
      tmp   

  public abstract <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> T createIntersectionSingleRange();
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;)TT;
    MethodParameters:
      Name  Flags
      o     

  public <T extends com.oracle.truffle.regex.charset.SortedListOfRanges> T subtract(T, com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/SortedListOfRanges;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=12, args_size=3
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.SortedListOfRanges o
        start local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
         0: .line 153
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getBuffer1:(Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
            astore 3 /* subtractionRanges */
        start local 3 // com.oracle.truffle.regex.charset.RangesBuffer subtractionRanges
         1: .line 156
            iconst_1
            istore 6 /* unchanged */
        start local 6 // boolean unchanged
         2: .line 157
            iconst_0
            istore 7 /* ia */
        start local 7 // int ia
         3: goto 37
         4: .line 158
      StackMap locals: com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.charset.SortedListOfRanges com.oracle.truffle.regex.tregex.buffer.CompilationBuffer com.oracle.truffle.regex.charset.RangesBuffer top top int int
      StackMap stack:
            aload 1 /* o */
            aload 0 /* this */
            iload 7 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.binarySearch:(I)I
            istore 8 /* search */
        start local 8 // int search
         5: .line 159
            aload 1 /* o */
            iload 8 /* search */
            aload 0 /* this */
            iload 7 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.binarySearchExactMatch:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)Z
            ifeq 8
         6: .line 160
            iconst_0
            istore 6 /* unchanged */
         7: .line 161
            goto 36
         8: .line 163
      StackMap locals: int
      StackMap stack:
            aload 1 /* o */
            iload 8 /* search */
            aload 0 /* this */
            iload 7 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.binarySearchGetFirstIntersecting:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)I
            istore 9 /* firstIntersection */
        start local 9 // int firstIntersection
         9: .line 164
            aload 1 /* o */
            iload 9 /* firstIntersection */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.binarySearchNoIntersectingFound:(I)Z
            ifeq 12
        10: .line 165
            aload 0 /* this */
            aload 3 /* subtractionRanges */
            iload 7 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.addRangeTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;I)V
        11: .line 166
            goto 36
        12: .line 168
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 6 /* unchanged */
        13: .line 169
            aload 0 /* this */
            iload 7 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 4 /* tmpLo */
        start local 4 // int tmpLo
        14: .line 170
            aload 0 /* this */
            iload 7 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 5 /* tmpHi */
        start local 5 // int tmpHi
        15: .line 171
            iconst_1
            istore 10 /* rest */
        start local 10 // boolean rest
        16: .line 172
            iload 9 /* firstIntersection */
            istore 11 /* ib */
        start local 11 // int ib
        17: goto 33
        18: .line 173
      StackMap locals: com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.charset.SortedListOfRanges com.oracle.truffle.regex.tregex.buffer.CompilationBuffer com.oracle.truffle.regex.charset.RangesBuffer int int int int int int int int
      StackMap stack:
            aload 1 /* o */
            iload 11 /* ib */
            iload 4 /* tmpLo */
            iload 5 /* tmpHi */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.rightOf:(III)Z
            ifeq 20
        19: .line 174
            goto 34
        20: .line 176
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            iload 11 /* ib */
            iload 4 /* tmpLo */
            iload 5 /* tmpHi */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.intersects:(III)Z
            ifeq 32
        21: .line 177
            aload 1 /* o */
            iload 11 /* ib */
            iload 4 /* tmpLo */
            iload 5 /* tmpHi */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.contains:(III)Z
            ifeq 24
        22: .line 178
            iconst_0
            istore 10 /* rest */
        23: .line 179
            goto 34
        24: .line 180
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            iload 11 /* ib */
            iload 4 /* tmpLo */
            iload 5 /* tmpHi */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.containedBy:(III)Z
            ifeq 28
            iload 4 /* tmpLo */
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getLo:(I)I
            if_icmpeq 28
            iload 5 /* tmpHi */
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getHi:(I)I
            if_icmpeq 28
        25: .line 181
            aload 3 /* subtractionRanges */
            iload 4 /* tmpLo */
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getLo:(I)I
            iconst_1
            isub
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        26: .line 182
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getHi:(I)I
            iconst_1
            iadd
            istore 4 /* tmpLo */
        27: .line 183
            goto 32
      StackMap locals:
      StackMap stack:
        28: iload 4 /* tmpLo */
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getLo:(I)I
            if_icmpge 31
        29: .line 184
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getLo:(I)I
            iconst_1
            isub
            istore 5 /* tmpHi */
        30: .line 185
            goto 32
        31: .line 186
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            iload 11 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.getHi:(I)I
            iconst_1
            iadd
            istore 4 /* tmpLo */
        32: .line 172
      StackMap locals:
      StackMap stack:
            iinc 11 /* ib */ 1
      StackMap locals:
      StackMap stack:
        33: iload 11 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.SortedListOfRanges.size:()I
            if_icmplt 18
        end local 11 // int ib
        34: .line 190
      StackMap locals:
      StackMap stack:
            iload 10 /* rest */
            ifeq 36
        35: .line 191
            aload 3 /* subtractionRanges */
            iload 4 /* tmpLo */
            iload 5 /* tmpHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        end local 10 // boolean rest
        end local 9 // int firstIntersection
        end local 8 // int search
        end local 5 // int tmpHi
        end local 4 // int tmpLo
        36: .line 157
      StackMap locals: com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.charset.SortedListOfRanges com.oracle.truffle.regex.tregex.buffer.CompilationBuffer com.oracle.truffle.regex.charset.RangesBuffer top top int int
      StackMap stack:
            iinc 7 /* ia */ 1
      StackMap locals:
      StackMap stack:
        37: iload 7 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmplt 4
        end local 7 // int ia
        38: .line 194
            iload 6 /* unchanged */
            ifeq 41
        39: .line 195
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 40
            aload 0 /* this */
            aload 3 /* subtractionRanges */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifne 40
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        40: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        41: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* subtractionRanges */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            areturn
        end local 6 // boolean unchanged
        end local 3 // com.oracle.truffle.regex.charset.RangesBuffer subtractionRanges
        end local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
        end local 1 // com.oracle.truffle.regex.charset.SortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   42     0               this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0   42     1                  o  TT;
            0   42     2  compilationBuffer  Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;
            1   42     3  subtractionRanges  Lcom/oracle/truffle/regex/charset/RangesBuffer;
           14   36     4              tmpLo  I
           15   36     5              tmpHi  I
            2   42     6          unchanged  Z
            3   38     7                 ia  I
            5   36     8             search  I
            9   36     9  firstIntersection  I
           16   36    10               rest  Z
           17   34    11                 ib  I
    Signature: <T::Lcom/oracle/truffle/regex/charset/SortedListOfRanges;>(TT;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)TT;
    MethodParameters:
                   Name  Flags
      o                  
      compilationBuffer  

  public <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult<T> intersectAndSubtract(T, com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges$IntersectAndSubtractResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=15, args_size=3
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        start local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
         0: .line 227
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.matchesNothing:()Z
            ifne 1
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.matchesNothing:()Z
            ifne 1
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMin:()I
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMax:()I
            if_icmpgt 1
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMin:()I
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMax:()I
            if_icmple 2
         1: .line 229
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            aload 1 /* o */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
         2: .line 231
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokevirtual com.oracle.truffle.regex.tregex.buffer.CompilationBuffer.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.matchesEverything:(Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)Z
            ifeq 4
         3: .line 232
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 1 /* o */
            aload 2 /* compilationBuffer */
            invokevirtual com.oracle.truffle.regex.tregex.buffer.CompilationBuffer.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createInverse:(Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 1 /* o */
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
         4: .line 234
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            aload 2 /* compilationBuffer */
            invokevirtual com.oracle.truffle.regex.tregex.buffer.CompilationBuffer.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.matchesEverything:(Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)Z
            ifeq 6
         5: .line 235
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokevirtual com.oracle.truffle.regex.tregex.buffer.CompilationBuffer.getEncoding:()Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createInverse:(Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
         6: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* o */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 238
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
         8: .line 240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getBuffer1:(Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
            astore 3 /* subtractedA */
        start local 3 // com.oracle.truffle.regex.charset.RangesBuffer subtractedA
         9: .line 241
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getBuffer2:(Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
            astore 4 /* subtractedB */
        start local 4 // com.oracle.truffle.regex.charset.RangesBuffer subtractedB
        10: .line 242
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getBuffer3:(Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
            astore 5 /* intersectionRanges */
        start local 5 // com.oracle.truffle.regex.charset.RangesBuffer intersectionRanges
        11: .line 243
            iconst_0
            istore 6 /* ia */
        start local 6 // int ia
        12: .line 244
            iconst_0
            istore 7 /* ib */
        start local 7 // int ib
        13: .line 245
            iconst_0
            istore 8 /* noIntersection */
        start local 8 // boolean noIntersection
        14: .line 247
      StackMap locals: com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.tregex.buffer.CompilationBuffer com.oracle.truffle.regex.charset.RangesBuffer com.oracle.truffle.regex.charset.RangesBuffer com.oracle.truffle.regex.charset.RangesBuffer int int int
      StackMap stack:
            aload 0 /* this */
            iload 6 /* ia */
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.leftOf:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)Z
            ifeq 19
        15: .line 248
            iinc 6 /* ia */ 1
        16: .line 249
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmplt 14
        17: .line 250
            iconst_1
            istore 8 /* noIntersection */
        18: .line 251
            goto 23
        19: .line 253
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            iload 7 /* ib */
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.leftOf:(ILcom/oracle/truffle/regex/charset/SortedListOfRanges;I)Z
            ifeq 23
        20: .line 254
            iinc 7 /* ib */ 1
        21: .line 255
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmplt 14
        22: .line 256
            iconst_1
            istore 8 /* noIntersection */
        23: .line 263
      StackMap locals:
      StackMap stack:
            iload 8 /* noIntersection */
            ifeq 25
        24: .line 264
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            aload 1 /* o */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
        25: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* subtractedA */
            iconst_0
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        26: .line 267
            aload 1 /* o */
            aload 4 /* subtractedB */
            iconst_0
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        27: .line 268
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 9 /* raLo */
        start local 9 // int raLo
        28: .line 269
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 10 /* raHi */
        start local 10 // int raHi
        29: .line 270
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 11 /* rbLo */
        start local 11 // int rbLo
        30: .line 271
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 12 /* rbHi */
        start local 12 // int rbHi
        31: .line 272
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 32
            iload 9 /* raLo */
            iload 10 /* raHi */
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            invokestatic com.oracle.truffle.regex.charset.SortedListOfRanges.intersects:(IIII)Z
            ifne 32
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        32: .line 273
      StackMap locals: com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges com.oracle.truffle.regex.tregex.buffer.CompilationBuffer com.oracle.truffle.regex.charset.RangesBuffer com.oracle.truffle.regex.charset.RangesBuffer com.oracle.truffle.regex.charset.RangesBuffer int int int int int int int
      StackMap stack:
            iinc 6 /* ia */ 1
        33: .line 274
            iinc 7 /* ib */ 1
        34: .line 276
      StackMap locals:
      StackMap stack:
            iload 9 /* raLo */
            iload 10 /* raHi */
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            invokestatic com.oracle.truffle.regex.charset.SortedListOfRanges.leftOf:(IIII)Z
            ifeq 44
        35: .line 277
            aload 3 /* subtractedA */
            iload 9 /* raLo */
            iload 10 /* raHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        36: .line 278
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmpge 41
        37: .line 279
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 9 /* raLo */
        38: .line 280
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 10 /* raHi */
        39: .line 281
            iinc 6 /* ia */ 1
        40: .line 282
            goto 34
        41: .line 284
      StackMap locals:
      StackMap stack:
            aload 4 /* subtractedB */
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        42: .line 285
            aload 1 /* o */
            aload 4 /* subtractedB */
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        43: .line 286
            goto 102
        44: .line 289
      StackMap locals:
      StackMap stack:
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            iload 9 /* raLo */
            iload 10 /* raHi */
            invokestatic com.oracle.truffle.regex.charset.SortedListOfRanges.leftOf:(IIII)Z
            ifeq 54
        45: .line 290
            aload 4 /* subtractedB */
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        46: .line 291
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmpge 51
        47: .line 292
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 11 /* rbLo */
        48: .line 293
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 12 /* rbHi */
        49: .line 294
            iinc 7 /* ib */ 1
        50: .line 295
            goto 34
        51: .line 297
      StackMap locals:
      StackMap stack:
            aload 3 /* subtractedA */
            iload 9 /* raLo */
            iload 10 /* raHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        52: .line 298
            aload 0 /* this */
            aload 3 /* subtractedA */
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        53: .line 299
            goto 102
        54: .line 302
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 55
            iload 9 /* raLo */
            iload 10 /* raHi */
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            invokestatic com.oracle.truffle.regex.charset.SortedListOfRanges.intersects:(IIII)Z
            ifne 55
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        55: .line 303
      StackMap locals:
      StackMap stack:
            iload 9 /* raLo */
            istore 13 /* intersectionLo */
        start local 13 // int intersectionLo
        56: .line 304
            iload 9 /* raLo */
            iload 11 /* rbLo */
            if_icmpge 60
        57: .line 305
            iload 11 /* rbLo */
            istore 13 /* intersectionLo */
        58: .line 306
            aload 3 /* subtractedA */
            iload 9 /* raLo */
            iload 13 /* intersectionLo */
            iconst_1
            isub
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        59: .line 307
            goto 62
      StackMap locals: int
      StackMap stack:
        60: iload 9 /* raLo */
            iload 11 /* rbLo */
            if_icmpeq 62
        61: .line 308
            aload 4 /* subtractedB */
            iload 11 /* rbLo */
            iload 13 /* intersectionLo */
            iconst_1
            isub
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        62: .line 310
      StackMap locals:
      StackMap stack:
            iload 10 /* raHi */
            istore 14 /* intersectionHi */
        start local 14 // int intersectionHi
        63: .line 311
            iload 10 /* raHi */
            iload 12 /* rbHi */
            if_icmple 75
        64: .line 312
            iload 12 /* rbHi */
            istore 14 /* intersectionHi */
        65: .line 313
            aload 5 /* intersectionRanges */
            iload 13 /* intersectionLo */
            iload 14 /* intersectionHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        66: .line 314
            iload 14 /* intersectionHi */
            iconst_1
            iadd
            istore 9 /* raLo */
        67: .line 315
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmpge 72
        68: .line 316
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 11 /* rbLo */
        69: .line 317
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 12 /* rbHi */
        70: .line 318
            iinc 7 /* ib */ 1
        71: .line 319
            goto 34
        72: .line 320
      StackMap locals: int
      StackMap stack:
            aload 3 /* subtractedA */
            iload 9 /* raLo */
            iload 10 /* raHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        73: .line 321
            aload 0 /* this */
            aload 3 /* subtractedA */
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        74: .line 322
            goto 102
        75: .line 324
      StackMap locals:
      StackMap stack:
            iload 10 /* raHi */
            iload 12 /* rbHi */
            if_icmpge 86
        76: .line 325
            aload 5 /* intersectionRanges */
            iload 13 /* intersectionLo */
            iload 14 /* intersectionHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        77: .line 326
            iload 14 /* intersectionHi */
            iconst_1
            iadd
            istore 11 /* rbLo */
        78: .line 327
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmpge 83
        79: .line 328
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 9 /* raLo */
        80: .line 329
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 10 /* raHi */
        81: .line 330
            iinc 6 /* ia */ 1
        82: .line 331
            goto 34
        83: .line 332
      StackMap locals:
      StackMap stack:
            aload 4 /* subtractedB */
            iload 11 /* rbLo */
            iload 12 /* rbHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        84: .line 333
            aload 1 /* o */
            aload 4 /* subtractedB */
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        85: .line 334
            goto 102
        86: .line 337
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 87
            iload 10 /* raHi */
            iload 12 /* rbHi */
            if_icmpeq 87
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        87: .line 338
      StackMap locals:
      StackMap stack:
            aload 5 /* intersectionRanges */
            iload 13 /* intersectionLo */
            iload 14 /* intersectionHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
        88: .line 339
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmpge 93
        89: .line 340
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 9 /* raLo */
        90: .line 341
            aload 0 /* this */
            iload 6 /* ia */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 10 /* raHi */
        91: .line 342
            iinc 6 /* ia */ 1
        92: .line 343
            goto 95
        93: .line 344
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            aload 4 /* subtractedB */
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        94: .line 345
            goto 102
        95: .line 347
      StackMap locals:
      StackMap stack:
            iload 7 /* ib */
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            if_icmpge 100
        96: .line 348
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getLo:(I)I
            istore 11 /* rbLo */
        97: .line 349
            aload 1 /* o */
            iload 7 /* ib */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getHi:(I)I
            istore 12 /* rbHi */
        98: .line 350
            iinc 7 /* ib */ 1
        99: .line 351
            goto 34
       100: .line 352
      StackMap locals:
      StackMap stack:
            aload 3 /* subtractedA */
            iload 9 /* raLo */
            iload 10 /* raHi */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.appendRange:(II)V
       101: .line 353
            aload 0 /* this */
            aload 3 /* subtractedA */
            iload 6 /* ia */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.appendRangesTo:(Lcom/oracle/truffle/regex/charset/RangesBuffer;II)V
        end local 14 // int intersectionHi
        end local 13 // int intersectionLo
       102: .line 358
      StackMap locals:
      StackMap stack:
            aload 3 /* subtractedA */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.isEmpty:()Z
            ifeq 105
       103: .line 359
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 104
            aload 0 /* this */
            aload 5 /* intersectionRanges */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifne 104
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
       104: .line 360
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            aload 4 /* subtractedB */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
       105: .line 361
      StackMap locals:
      StackMap stack:
            aload 4 /* subtractedB */
            invokeinterface com.oracle.truffle.regex.charset.RangesBuffer.isEmpty:()Z
            ifeq 108
       106: .line 362
            getstatic com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.$assertionsDisabled:Z
            ifne 107
            aload 1 /* o */
            aload 5 /* intersectionRanges */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifne 107
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
       107: .line 363
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            aload 3 /* subtractedA */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createEmpty:()Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 1 /* o */
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
       108: .line 365
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
            dup
            aload 0 /* this */
            aload 3 /* subtractedA */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            aload 4 /* subtractedB */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            aload 0 /* this */
            aload 5 /* intersectionRanges */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
        end local 12 // int rbHi
        end local 11 // int rbLo
        end local 10 // int raHi
        end local 9 // int raLo
        end local 8 // boolean noIntersection
        end local 7 // int ib
        end local 6 // int ia
        end local 5 // com.oracle.truffle.regex.charset.RangesBuffer intersectionRanges
        end local 4 // com.oracle.truffle.regex.charset.RangesBuffer subtractedB
        end local 3 // com.oracle.truffle.regex.charset.RangesBuffer subtractedA
        end local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
        end local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0  109     0                this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0  109     1                   o  TT;
            0  109     2   compilationBuffer  Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;
            9  109     3         subtractedA  Lcom/oracle/truffle/regex/charset/RangesBuffer;
           10  109     4         subtractedB  Lcom/oracle/truffle/regex/charset/RangesBuffer;
           11  109     5  intersectionRanges  Lcom/oracle/truffle/regex/charset/RangesBuffer;
           12  109     6                  ia  I
           13  109     7                  ib  I
           14  109     8      noIntersection  Z
           28  109     9                raLo  I
           29  109    10                raHi  I
           30  109    11                rbLo  I
           31  109    12                rbHi  I
           56  102    13      intersectionLo  I
           63  102    14      intersectionHi  I
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges$IntersectAndSubtractResult<TT;>;
    MethodParameters:
                   Name  Flags
      o                  
      compilationBuffer  

  public <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> T union();
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
         0: .line 373
            aload 0 /* this */
            aload 1 /* o */
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.createTempBuffer:()Lcom/oracle/truffle/regex/charset/RangesBuffer;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.union:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            areturn
        end local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0    1     1     o  TT;
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;)TT;
    MethodParameters:
      Name  Flags
      o     

  public <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> T union(T, com.oracle.truffle.regex.tregex.buffer.CompilationBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        start local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
         0: .line 380
            aload 0 /* this */
            aload 1 /* o */
            aload 0 /* this */
            aload 2 /* compilationBuffer */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getBuffer1:(Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)Lcom/oracle/truffle/regex/charset/RangesBuffer;
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.union:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            areturn
        end local 2 // com.oracle.truffle.regex.tregex.buffer.CompilationBuffer compilationBuffer
        end local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0    1     1                  o  TT;
            0    1     2  compilationBuffer  Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;Lcom/oracle/truffle/regex/tregex/buffer/CompilationBuffer;)TT;
    MethodParameters:
                   Name  Flags
      o                  
      compilationBuffer  

  public <T extends com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges> T union(T, com.oracle.truffle.regex.charset.RangesBuffer);
    descriptor: (Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
        start local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        start local 2 // com.oracle.truffle.regex.charset.RangesBuffer target
         0: .line 389
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.matchesNothing:()Z
            ifne 1
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            iconst_1
            if_icmpne 2
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMin:()I
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMin:()I
            if_icmpgt 2
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMax:()I
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMax:()I
            if_icmplt 2
         1: .line 390
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            areturn
         2: .line 392
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.matchesNothing:()Z
            ifne 3
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.size:()I
            iconst_1
            if_icmpne 4
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMin:()I
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMin:()I
            if_icmpgt 4
            aload 0 /* this */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMax:()I
            aload 1 /* o */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.getMax:()I
            if_icmplt 4
         3: .line 393
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
         4: .line 395
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* o */
            aload 2 /* target */
            invokestatic com.oracle.truffle.regex.charset.SortedListOfRanges.union:(Lcom/oracle/truffle/regex/charset/SortedListOfRanges;Lcom/oracle/truffle/regex/charset/SortedListOfRanges;Lcom/oracle/truffle/regex/charset/RangesBuffer;)V
         5: .line 396
            aload 0 /* this */
            aload 2 /* target */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifeq 7
         6: .line 397
            aload 0 /* this */
            areturn
         7: .line 399
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            aload 2 /* target */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.equalsBuffer:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Z
            ifeq 9
         8: .line 400
            aload 1 /* o */
            areturn
         9: .line 402
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* target */
            invokeinterface com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges.create:(Lcom/oracle/truffle/regex/charset/RangesBuffer;)Lcom/oracle/truffle/regex/charset/SortedListOfRanges;
            checkcast com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
            areturn
        end local 2 // com.oracle.truffle.regex.charset.RangesBuffer target
        end local 1 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges o
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
            0   10     1       o  TT;
            0   10     2  target  Lcom/oracle/truffle/regex/charset/RangesBuffer;
    Signature: <T::Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;>(TT;Lcom/oracle/truffle/regex/charset/RangesBuffer;)TT;
    MethodParameters:
        Name  Flags
      o       
      target  

  public java.util.Iterator<com.oracle.truffle.regex.charset.Range> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
         0: .line 407
            new com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$ImmutableSortedListOfRangesIterator
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$ImmutableSortedListOfRangesIterator.<init>:(Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;)V
            areturn
        end local 0 // com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/regex/charset/ImmutableSortedListOfRanges;
    Signature: ()Ljava/util/Iterator<Lcom/oracle/truffle/regex/charset/Range;>;
}
Signature: Ljava/lang/Object;Lcom/oracle/truffle/regex/charset/SortedListOfRanges;Ljava/lang/Iterable<Lcom/oracle/truffle/regex/charset/Range;>;
SourceFile: "ImmutableSortedListOfRanges.java"
NestMembers:
  com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$ImmutableSortedListOfRangesIterator  com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult
InnerClasses:
  public final ImmutableSortedListOfRangesIterator = com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$ImmutableSortedListOfRangesIterator of com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
  public final IntersectAndSubtractResult = com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges$IntersectAndSubtractResult of com.oracle.truffle.regex.charset.ImmutableSortedListOfRanges
  public abstract Encoding = com.oracle.truffle.regex.tregex.string.Encodings$Encoding of com.oracle.truffle.regex.tregex.string.Encodings