public class android.text.TextLine
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.text.TextLine
  super_class: java.lang.Object
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private android.text.TextPaint mPaint;
    descriptor: Landroid/text/TextPaint;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.CharSequence mText;
    descriptor: Ljava/lang/CharSequence;
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private android.text.Layout$Directions mDirections;
    descriptor: Landroid/text/Layout$Directions;
    flags: (0x0002) ACC_PRIVATE

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

  private android.text.Layout$TabStops mTabs;
    descriptor: Landroid/text/Layout$TabStops;
    flags: (0x0002) ACC_PRIVATE

  private char[] mChars;
    descriptor: [C
    flags: (0x0002) ACC_PRIVATE

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

  private android.text.Spanned mSpanned;
    descriptor: Landroid/text/Spanned;
    flags: (0x0002) ACC_PRIVATE

  private android.text.PrecomputedText mComputed;
    descriptor: Landroid/text/PrecomputedText;
    flags: (0x0002) ACC_PRIVATE

  private float mAddedWidth;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

  private final android.text.TextPaint mWorkPaint;
    descriptor: Landroid/text/TextPaint;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final android.text.TextPaint mActivePaint;
    descriptor: Landroid/text/TextPaint;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final android.text.SpanSet<android.text.style.MetricAffectingSpan> mMetricAffectingSpanSpanSet;
    descriptor: Landroid/text/SpanSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/text/SpanSet<Landroid/text/style/MetricAffectingSpan;>;

  private final android.text.SpanSet<android.text.style.CharacterStyle> mCharacterStyleSpanSet;
    descriptor: Landroid/text/SpanSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/text/SpanSet<Landroid/text/style/CharacterStyle;>;

  private final android.text.SpanSet<android.text.style.ReplacementSpan> mReplacementSpanSpanSet;
    descriptor: Landroid/text/SpanSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/text/SpanSet<Landroid/text/style/ReplacementSpan;>;

  private final android.text.TextLine$DecorationInfo mDecorationInfo;
    descriptor: Landroid/text/TextLine$DecorationInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.ArrayList<android.text.TextLine$DecorationInfo> mDecorations;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Landroid/text/TextLine$DecorationInfo;>;

  private static final android.text.TextLine[] sCached;
    descriptor: [Landroid/text/TextLine;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final int TAB_INCREMENT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 81
            iconst_3
            anewarray android.text.TextLine
            putstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
         1: .line 1307
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.text.TextLine this
         0: .line 49
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            new android.text.TextPaint
            dup
            invokespecial android.text.TextPaint.<init>:()V
            putfield android.text.TextLine.mWorkPaint:Landroid/text/TextPaint;
         2: .line 70
            aload 0 /* this */
            new android.text.TextPaint
            dup
            invokespecial android.text.TextPaint.<init>:()V
            putfield android.text.TextLine.mActivePaint:Landroid/text/TextPaint;
         3: .line 71
            aload 0 /* this */
         4: .line 72
            new android.text.SpanSet
            dup
            ldc Landroid/text/style/MetricAffectingSpan;
            invokespecial android.text.SpanSet.<init>:(Ljava/lang/Class;)V
            putfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
         5: .line 73
            aload 0 /* this */
         6: .line 74
            new android.text.SpanSet
            dup
            ldc Landroid/text/style/CharacterStyle;
            invokespecial android.text.SpanSet.<init>:(Ljava/lang/Class;)V
            putfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
         7: .line 75
            aload 0 /* this */
         8: .line 76
            new android.text.SpanSet
            dup
            ldc Landroid/text/style/ReplacementSpan;
            invokespecial android.text.SpanSet.<init>:(Ljava/lang/Class;)V
            putfield android.text.TextLine.mReplacementSpanSpanSet:Landroid/text/SpanSet;
         9: .line 78
            aload 0 /* this */
            new android.text.TextLine$DecorationInfo
            dup
            invokespecial android.text.TextLine$DecorationInfo.<init>:()V
            putfield android.text.TextLine.mDecorationInfo:Landroid/text/TextLine$DecorationInfo;
        10: .line 79
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.text.TextLine.mDecorations:Ljava/util/ArrayList;
        11: .line 49
            return
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Landroid/text/TextLine;

  public static android.text.TextLine obtain();
    descriptor: ()Landroid/text/TextLine;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=0
         0: .line 91
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            dup
            astore 1
            monitorenter
         1: .line 92
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            arraylength
            istore 2 /* i */
        start local 2 // int i
         2: goto 8
         3: .line 93
      StackMap locals: top android.text.TextLine[] int
      StackMap stack:
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            iload 2 /* i */
            aaload
            ifnull 8
         4: .line 94
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            iload 2 /* i */
            aaload
            astore 0 /* tl */
        start local 0 // android.text.TextLine tl
         5: .line 95
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            iload 2 /* i */
            aconst_null
            aastore
         6: .line 96
            aload 0 /* tl */
            aload 1
            monitorexit
         7: areturn
        end local 0 // android.text.TextLine tl
         8: .line 92
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ -1
            iload 2 /* i */
            ifge 3
        end local 2 // int i
         9: .line 91
            aload 1
            monitorexit
        10: goto 13
      StackMap locals: top android.text.TextLine[]
      StackMap stack: java.lang.Throwable
        11: aload 1
            monitorexit
        12: athrow
        13: .line 100
      StackMap locals:
      StackMap stack:
            new android.text.TextLine
            dup
            invokespecial android.text.TextLine.<init>:()V
            astore 0 /* tl */
        start local 0 // android.text.TextLine tl
        14: .line 104
            aload 0 /* tl */
            areturn
        end local 0 // android.text.TextLine tl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            5    8     0    tl  Landroid/text/TextLine;
           14   15     0    tl  Landroid/text/TextLine;
            2    9     2     i  I
      Exception table:
        from    to  target  type
           1     7      11  any
           8    10      11  any
          11    12      11  any
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)

  public static android.text.TextLine recycle(android.text.TextLine);
    descriptor: (Landroid/text/TextLine;)Landroid/text/TextLine;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // android.text.TextLine tl
         0: .line 116
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mText:Ljava/lang/CharSequence;
         1: .line 117
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
         2: .line 118
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
         3: .line 119
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
         4: .line 120
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mTabs:Landroid/text/Layout$TabStops;
         5: .line 121
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mChars:[C
         6: .line 122
            aload 0 /* tl */
            aconst_null
            putfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
         7: .line 124
            aload 0 /* tl */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            invokevirtual android.text.SpanSet.recycle:()V
         8: .line 125
            aload 0 /* tl */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            invokevirtual android.text.SpanSet.recycle:()V
         9: .line 126
            aload 0 /* tl */
            getfield android.text.TextLine.mReplacementSpanSpanSet:Landroid/text/SpanSet;
            invokevirtual android.text.SpanSet.recycle:()V
        10: .line 128
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            dup
            astore 1
            monitorenter
        11: .line 129
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        12: goto 17
        13: .line 130
      StackMap locals: android.text.TextLine[] int
      StackMap stack:
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            iload 2 /* i */
            aaload
            ifnonnull 16
        14: .line 131
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            iload 2 /* i */
            aload 0 /* tl */
            aastore
        15: .line 132
            goto 18
        16: .line 129
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 2 /* i */
            getstatic android.text.TextLine.sCached:[Landroid/text/TextLine;
            arraylength
            if_icmplt 13
        end local 2 // int i
        18: .line 128
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        19: goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: aload 1
            monitorexit
        21: athrow
        22: .line 136
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // android.text.TextLine tl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   23     0    tl  Landroid/text/TextLine;
           12   18     2     i  I
      Exception table:
        from    to  target  type
          11    19      20  any
          20    21      20  any
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    MethodParameters:
      Name  Flags
      tl    

  public void set(android.text.TextPaint, java.lang.CharSequence, int, int, int, android.text.Layout$Directions, boolean, android.text.Layout$TabStops);
    descriptor: (Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=15, args_size=9
        start local 0 // android.text.TextLine this
        start local 1 // android.text.TextPaint paint
        start local 2 // java.lang.CharSequence text
        start local 3 // int start
        start local 4 // int limit
        start local 5 // int dir
        start local 6 // android.text.Layout$Directions directions
        start local 7 // boolean hasTabs
        start local 8 // android.text.Layout$TabStops tabStops
         0: .line 154
            aload 0 /* this */
            aload 1 /* paint */
            putfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
         1: .line 155
            aload 0 /* this */
            aload 2 /* text */
            putfield android.text.TextLine.mText:Ljava/lang/CharSequence;
         2: .line 156
            aload 0 /* this */
            iload 3 /* start */
            putfield android.text.TextLine.mStart:I
         3: .line 157
            aload 0 /* this */
            iload 4 /* limit */
            iload 3 /* start */
            isub
            putfield android.text.TextLine.mLen:I
         4: .line 158
            aload 0 /* this */
            iload 5 /* dir */
            putfield android.text.TextLine.mDir:I
         5: .line 159
            aload 0 /* this */
            aload 6 /* directions */
            putfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
         6: .line 160
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            ifnonnull 8
         7: .line 161
            new java.lang.IllegalArgumentException
            dup
            ldc "Directions cannot be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* hasTabs */
            putfield android.text.TextLine.mHasTabs:Z
         9: .line 164
            aload 0 /* this */
            aconst_null
            putfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
        10: .line 166
            iconst_0
            istore 9 /* hasReplacement */
        start local 9 // boolean hasReplacement
        11: .line 167
            aload 2 /* text */
            instanceof android.text.Spanned
            ifeq 17
        12: .line 168
            aload 0 /* this */
            aload 2 /* text */
            checkcast android.text.Spanned
            putfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
        13: .line 169
            aload 0 /* this */
            getfield android.text.TextLine.mReplacementSpanSpanSet:Landroid/text/SpanSet;
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            iload 3 /* start */
            iload 4 /* limit */
            invokevirtual android.text.SpanSet.init:(Landroid/text/Spanned;II)V
        14: .line 170
            aload 0 /* this */
            getfield android.text.TextLine.mReplacementSpanSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.numberOfSpans:I
            ifle 15
            iconst_1
            goto 16
      StackMap locals: int
      StackMap stack:
        15: iconst_0
      StackMap locals:
      StackMap stack: int
        16: istore 9 /* hasReplacement */
        17: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
        18: .line 174
            aload 2 /* text */
            instanceof android.text.PrecomputedText
            ifeq 22
        19: .line 177
            aload 0 /* this */
            aload 2 /* text */
            checkcast android.text.PrecomputedText
            putfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
        20: .line 178
            aload 0 /* this */
            getfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
            invokevirtual android.text.PrecomputedText.getParams:()Landroid/text/PrecomputedText$Params;
            invokevirtual android.text.PrecomputedText$Params.getTextPaint:()Landroid/text/TextPaint;
            aload 1 /* paint */
            invokevirtual android.text.TextPaint.equalsForTextMeasurement:(Landroid/graphics/Paint;)Z
            ifne 22
        21: .line 179
            aload 0 /* this */
            aconst_null
            putfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
        22: .line 183
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 9 /* hasReplacement */
            ifne 23
            iload 7 /* hasTabs */
            ifne 23
            aload 6 /* directions */
            getstatic android.text.Layout.DIRS_ALL_LEFT_TO_RIGHT:Landroid/text/Layout$Directions;
            if_acmpne 23
            iconst_0
            goto 24
      StackMap locals:
      StackMap stack: android.text.TextLine
        23: iconst_1
      StackMap locals: android.text.TextLine android.text.TextPaint java.lang.CharSequence int int int android.text.Layout$Directions int android.text.Layout$TabStops int
      StackMap stack: android.text.TextLine int
        24: putfield android.text.TextLine.mCharsValid:Z
        25: .line 185
            aload 0 /* this */
            getfield android.text.TextLine.mCharsValid:Z
            ifeq 44
        26: .line 186
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            ifnull 27
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            arraylength
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmpge 28
        27: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            invokestatic com.android.internal.util.ArrayUtils.newUnpaddedCharArray:(I)[C
            putfield android.text.TextLine.mChars:[C
        28: .line 189
      StackMap locals:
      StackMap stack:
            aload 2 /* text */
            iload 3 /* start */
            iload 4 /* limit */
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iconst_0
            invokestatic android.text.TextUtils.getChars:(Ljava/lang/CharSequence;II[CI)V
        29: .line 190
            iload 9 /* hasReplacement */
            ifeq 44
        30: .line 196
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            astore 10 /* chars */
        start local 10 // char[] chars
        31: .line 197
            iload 3 /* start */
            istore 11 /* i */
        start local 11 // int i
        32: goto 43
        33: .line 198
      StackMap locals: char[] int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mReplacementSpanSpanSet:Landroid/text/SpanSet;
            iload 11 /* i */
            iload 4 /* limit */
            invokevirtual android.text.SpanSet.getNextTransition:(II)I
            istore 12 /* inext */
        start local 12 // int inext
        34: .line 199
            aload 0 /* this */
            getfield android.text.TextLine.mReplacementSpanSpanSet:Landroid/text/SpanSet;
            iload 11 /* i */
            iload 12 /* inext */
            invokevirtual android.text.SpanSet.hasSpansIntersecting:(II)Z
            ifeq 42
        35: .line 201
            aload 10 /* chars */
            iload 11 /* i */
            iload 3 /* start */
            isub
            ldc 65532
            castore
        36: .line 202
            iload 11 /* i */
            iload 3 /* start */
            isub
            iconst_1
            iadd
            istore 13 /* j */
        start local 13 // int j
        37: iload 12 /* inext */
            iload 3 /* start */
            isub
            istore 14 /* e */
        start local 14 // int e
        38: goto 41
        39: .line 203
      StackMap locals: int int int
      StackMap stack:
            aload 10 /* chars */
            iload 13 /* j */
            ldc 65279
            castore
        40: .line 202
            iinc 13 /* j */ 1
      StackMap locals:
      StackMap stack:
        41: iload 13 /* j */
            iload 14 /* e */
            if_icmplt 39
        end local 14 // int e
        end local 13 // int j
        42: .line 197
      StackMap locals:
      StackMap stack:
            iload 12 /* inext */
            istore 11 /* i */
        end local 12 // int inext
      StackMap locals:
      StackMap stack:
        43: iload 11 /* i */
            iload 4 /* limit */
            if_icmplt 33
        end local 11 // int i
        end local 10 // char[] chars
        44: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* tabStops */
            putfield android.text.TextLine.mTabs:Landroid/text/Layout$TabStops;
        45: .line 210
            aload 0 /* this */
            fconst_0
            putfield android.text.TextLine.mAddedWidth:F
        46: .line 211
            return
        end local 9 // boolean hasReplacement
        end local 8 // android.text.Layout$TabStops tabStops
        end local 7 // boolean hasTabs
        end local 6 // android.text.Layout$Directions directions
        end local 5 // int dir
        end local 4 // int limit
        end local 3 // int start
        end local 2 // java.lang.CharSequence text
        end local 1 // android.text.TextPaint paint
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   47     0            this  Landroid/text/TextLine;
            0   47     1           paint  Landroid/text/TextPaint;
            0   47     2            text  Ljava/lang/CharSequence;
            0   47     3           start  I
            0   47     4           limit  I
            0   47     5             dir  I
            0   47     6      directions  Landroid/text/Layout$Directions;
            0   47     7         hasTabs  Z
            0   47     8        tabStops  Landroid/text/Layout$TabStops;
           11   47     9  hasReplacement  Z
           31   44    10           chars  [C
           32   44    11               i  I
           34   43    12           inext  I
           37   42    13               j  I
           38   42    14               e  I
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    MethodParameters:
            Name  Flags
      paint       
      text        
      start       
      limit       
      dir         
      directions  
      hasTabs     
      tabStops    

  public void justify(float);
    descriptor: (F)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // android.text.TextLine this
        start local 1 // float justifyWidth
         0: .line 218
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            istore 2 /* end */
        start local 2 // int end
         1: .line 219
            goto 3
         2: .line 220
      StackMap locals: int
      StackMap stack:
            iinc 2 /* end */ -1
         3: .line 219
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            ifle 4
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 2 /* end */
            iadd
            iconst_1
            isub
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokestatic android.text.TextLine.isLineEndSpace:(C)Z
            ifne 2
         4: .line 222
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            iload 2 /* end */
            invokevirtual android.text.TextLine.countStretchableSpaces:(II)I
            istore 3 /* spaces */
        start local 3 // int spaces
         5: .line 223
            iload 3 /* spaces */
            ifne 7
         6: .line 226
            return
         7: .line 228
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* end */
            iconst_0
            aconst_null
            invokevirtual android.text.TextLine.measure:(IZLandroid/graphics/Paint$FontMetricsInt;)F
            invokestatic java.lang.Math.abs:(F)F
            fstore 4 /* width */
        start local 4 // float width
         8: .line 229
            aload 0 /* this */
            fload 1 /* justifyWidth */
            fload 4 /* width */
            fsub
            iload 3 /* spaces */
            i2f
            fdiv
            putfield android.text.TextLine.mAddedWidth:F
         9: .line 230
            return
        end local 4 // float width
        end local 3 // int spaces
        end local 2 // int end
        end local 1 // float justifyWidth
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Landroid/text/TextLine;
            0   10     1  justifyWidth  F
            1   10     2           end  I
            5   10     3        spaces  I
            8   10     4         width  F
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    MethodParameters:
              Name  Flags
      justifyWidth  

  void draw(android.graphics.Canvas, float, int, int, int);
    descriptor: (Landroid/graphics/Canvas;FIII)V
    flags: (0x0000) 
    Code:
      stack=12, locals=16, args_size=6
        start local 0 // android.text.TextLine this
        start local 1 // android.graphics.Canvas c
        start local 2 // float x
        start local 3 // int top
        start local 4 // int y
        start local 5 // int bottom
         0: .line 242
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifne 7
         1: .line 243
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getstatic android.text.Layout.DIRS_ALL_LEFT_TO_RIGHT:Landroid/text/Layout$Directions;
            if_acmpne 4
         2: .line 244
            aload 0 /* this */
            aload 1 /* c */
            iconst_0
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_0
            fload 2 /* x */
            iload 3 /* top */
            iload 4 /* y */
            iload 5 /* bottom */
            iconst_0
            invokevirtual android.text.TextLine.drawRun:(Landroid/graphics/Canvas;IIZFIIIZ)F
            pop
         3: .line 245
            return
         4: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getstatic android.text.Layout.DIRS_ALL_RIGHT_TO_LEFT:Landroid/text/Layout$Directions;
            if_acmpne 7
         5: .line 248
            aload 0 /* this */
            aload 1 /* c */
            iconst_0
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_1
            fload 2 /* x */
            iload 3 /* top */
            iload 4 /* y */
            iload 5 /* bottom */
            iconst_0
            invokevirtual android.text.TextLine.drawRun:(Landroid/graphics/Canvas;IIZFIIIZ)F
            pop
         6: .line 249
            return
         7: .line 253
      StackMap locals:
      StackMap stack:
            fconst_0
            fstore 6 /* h */
        start local 6 // float h
         8: .line 254
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getfield android.text.Layout$Directions.mDirections:[I
            astore 7 /* runs */
        start local 7 // int[] runs
         9: .line 256
            aload 7 /* runs */
            arraylength
            iconst_2
            isub
            istore 8 /* lastRunIndex */
        start local 8 // int lastRunIndex
        10: .line 257
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        11: goto 43
        12: .line 258
      StackMap locals: android.text.TextLine android.graphics.Canvas float int int int float int[] int int
      StackMap stack:
            aload 7 /* runs */
            iload 9 /* i */
            iaload
            istore 10 /* runStart */
        start local 10 // int runStart
        13: .line 259
            iload 10 /* runStart */
            aload 7 /* runs */
            iload 9 /* i */
            iconst_1
            iadd
            iaload
            ldc 67108863
            iand
            iadd
            istore 11 /* runLimit */
        start local 11 // int runLimit
        14: .line 260
            iload 11 /* runLimit */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmple 16
        15: .line 261
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            istore 11 /* runLimit */
        16: .line 263
      StackMap locals: int int
      StackMap stack:
            aload 7 /* runs */
            iload 9 /* i */
            iconst_1
            iadd
            iaload
            ldc 67108864
            iand
            ifeq 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 12 /* runIsRtl */
        start local 12 // boolean runIsRtl
        19: .line 265
            iload 10 /* runStart */
            istore 13 /* segstart */
        start local 13 // int segstart
        20: .line 266
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifeq 21
            iload 10 /* runStart */
            goto 22
      StackMap locals: int int
      StackMap stack:
        21: iload 11 /* runLimit */
      StackMap locals:
      StackMap stack: int
        22: istore 14 /* j */
        start local 14 // int j
        23: goto 41
        24: .line 267
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 15 /* codept */
        start local 15 // int codept
        25: .line 268
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifeq 32
            iload 14 /* j */
            iload 11 /* runLimit */
            if_icmpge 32
        26: .line 269
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iload 14 /* j */
            caload
            istore 15 /* codept */
        27: .line 270
            iload 15 /* codept */
            ldc 55296
            if_icmplt 32
            iload 15 /* codept */
            ldc 56320
            if_icmpge 32
            iload 14 /* j */
            iconst_1
            iadd
            iload 11 /* runLimit */
            if_icmpge 32
        28: .line 271
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iload 14 /* j */
            invokestatic java.lang.Character.codePointAt:([CI)I
            istore 15 /* codept */
        29: .line 272
            iload 15 /* codept */
            ldc 65535
            if_icmple 32
        30: .line 273
            iinc 14 /* j */ 1
        31: .line 274
            goto 40
        32: .line 279
      StackMap locals: int
      StackMap stack:
            iload 14 /* j */
            iload 11 /* runLimit */
            if_icmpeq 33
            iload 15 /* codept */
            bipush 9
            if_icmpne 40
        33: .line 280
      StackMap locals:
      StackMap stack:
            fload 6 /* h */
            aload 0 /* this */
            aload 1 /* c */
            iload 13 /* segstart */
            iload 14 /* j */
            iload 12 /* runIsRtl */
            fload 2 /* x */
            fload 6 /* h */
            fadd
            iload 3 /* top */
            iload 4 /* y */
            iload 5 /* bottom */
        34: .line 281
            iload 9 /* i */
            iload 8 /* lastRunIndex */
            if_icmpne 35
            iload 14 /* j */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmpne 35
            iconst_0
            goto 36
      StackMap locals: android.text.TextLine android.graphics.Canvas float int int int float int[] int int int int int int int int
      StackMap stack: float android.text.TextLine android.graphics.Canvas int int int float int int int
        35: iconst_1
        36: .line 280
      StackMap locals: android.text.TextLine android.graphics.Canvas float int int int float int[] int int int int int int int int
      StackMap stack: float android.text.TextLine android.graphics.Canvas int int int float int int int int
            invokevirtual android.text.TextLine.drawRun:(Landroid/graphics/Canvas;IIZFIIIZ)F
            fadd
            fstore 6 /* h */
        37: .line 283
            iload 15 /* codept */
            bipush 9
            if_icmpne 39
        38: .line 284
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            i2f
            aload 0 /* this */
            fload 6 /* h */
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            i2f
            fmul
            invokevirtual android.text.TextLine.nextTab:(F)F
            fmul
            fstore 6 /* h */
        39: .line 286
      StackMap locals:
      StackMap stack:
            iload 14 /* j */
            iconst_1
            iadd
            istore 13 /* segstart */
        end local 15 // int codept
        40: .line 266
      StackMap locals:
      StackMap stack:
            iinc 14 /* j */ 1
      StackMap locals:
      StackMap stack:
        41: iload 14 /* j */
            iload 11 /* runLimit */
            if_icmple 24
        end local 14 // int j
        end local 13 // int segstart
        end local 12 // boolean runIsRtl
        end local 11 // int runLimit
        end local 10 // int runStart
        42: .line 257
            iinc 9 /* i */ 2
      StackMap locals: android.text.TextLine android.graphics.Canvas float int int int float int[] int int
      StackMap stack:
        43: iload 9 /* i */
            aload 7 /* runs */
            arraylength
            if_icmplt 12
        end local 9 // int i
        44: .line 290
            return
        end local 8 // int lastRunIndex
        end local 7 // int[] runs
        end local 6 // float h
        end local 5 // int bottom
        end local 4 // int y
        end local 3 // int top
        end local 2 // float x
        end local 1 // android.graphics.Canvas c
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   45     0          this  Landroid/text/TextLine;
            0   45     1             c  Landroid/graphics/Canvas;
            0   45     2             x  F
            0   45     3           top  I
            0   45     4             y  I
            0   45     5        bottom  I
            8   45     6             h  F
            9   45     7          runs  [I
           10   45     8  lastRunIndex  I
           11   44     9             i  I
           13   42    10      runStart  I
           14   42    11      runLimit  I
           19   42    12      runIsRtl  Z
           20   42    13      segstart  I
           23   42    14             j  I
           25   40    15        codept  I
    MethodParameters:
        Name  Flags
      c       
      x       
      top     
      y       
      bottom  

  public float metrics(android.graphics.Paint$FontMetricsInt);
    descriptor: (Landroid/graphics/Paint$FontMetricsInt;)F
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.text.TextLine this
        start local 1 // android.graphics.Paint$FontMetricsInt fmi
         0: .line 300
            aload 0 /* this */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_0
            aload 1 /* fmi */
            invokevirtual android.text.TextLine.measure:(IZLandroid/graphics/Paint$FontMetricsInt;)F
            freturn
        end local 1 // android.graphics.Paint$FontMetricsInt fmi
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/text/TextLine;
            0    1     1   fmi  Landroid/graphics/Paint$FontMetricsInt;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)
    MethodParameters:
      Name  Flags
      fmi   

  float measure(int, boolean, android.graphics.Paint$FontMetricsInt);
    descriptor: (IZLandroid/graphics/Paint$FontMetricsInt;)F
    flags: (0x0000) 
    Code:
      stack=7, locals=18, args_size=4
        start local 0 // android.text.TextLine this
        start local 1 // int offset
        start local 2 // boolean trailing
        start local 3 // android.graphics.Paint$FontMetricsInt fmi
         0: .line 317
            iload 2 /* trailing */
            ifeq 1
            iload 1 /* offset */
            iconst_1
            isub
            goto 2
      StackMap locals:
      StackMap stack:
         1: iload 1 /* offset */
      StackMap locals:
      StackMap stack: int
         2: istore 4 /* target */
        start local 4 // int target
         3: .line 318
            iload 4 /* target */
            ifge 5
         4: .line 319
            fconst_0
            freturn
         5: .line 322
      StackMap locals: int
      StackMap stack:
            fconst_0
            fstore 5 /* h */
        start local 5 // float h
         6: .line 324
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifne 11
         7: .line 325
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getstatic android.text.Layout.DIRS_ALL_LEFT_TO_RIGHT:Landroid/text/Layout$Directions;
            if_acmpne 9
         8: .line 326
            aload 0 /* this */
            iconst_0
            iload 1 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_0
            aload 3 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            freturn
         9: .line 328
      StackMap locals: float
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getstatic android.text.Layout.DIRS_ALL_RIGHT_TO_LEFT:Landroid/text/Layout$Directions;
            if_acmpne 11
        10: .line 329
            aload 0 /* this */
            iconst_0
            iload 1 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_1
            aload 3 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            freturn
        11: .line 333
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            astore 6 /* chars */
        start local 6 // char[] chars
        12: .line 334
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getfield android.text.Layout$Directions.mDirections:[I
            astore 7 /* runs */
        start local 7 // int[] runs
        13: .line 335
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        14: goto 62
        15: .line 336
      StackMap locals: char[] int[] int
      StackMap stack:
            aload 7 /* runs */
            iload 8 /* i */
            iaload
            istore 9 /* runStart */
        start local 9 // int runStart
        16: .line 337
            iload 9 /* runStart */
            aload 7 /* runs */
            iload 8 /* i */
            iconst_1
            iadd
            iaload
            ldc 67108863
            iand
            iadd
            istore 10 /* runLimit */
        start local 10 // int runLimit
        17: .line 338
            iload 10 /* runLimit */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmple 19
        18: .line 339
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            istore 10 /* runLimit */
        19: .line 341
      StackMap locals: int int
      StackMap stack:
            aload 7 /* runs */
            iload 8 /* i */
            iconst_1
            iadd
            iaload
            ldc 67108864
            iand
            ifeq 20
            iconst_1
            goto 21
      StackMap locals:
      StackMap stack:
        20: iconst_0
      StackMap locals:
      StackMap stack: int
        21: istore 11 /* runIsRtl */
        start local 11 // boolean runIsRtl
        22: .line 343
            iload 9 /* runStart */
            istore 12 /* segstart */
        start local 12 // int segstart
        23: .line 344
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifeq 24
            iload 9 /* runStart */
            goto 25
      StackMap locals: int int
      StackMap stack:
        24: iload 10 /* runLimit */
      StackMap locals:
      StackMap stack: int
        25: istore 13 /* j */
        start local 13 // int j
        26: goto 60
        27: .line 345
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 14 /* codept */
        start local 14 // int codept
        28: .line 346
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifeq 35
            iload 13 /* j */
            iload 10 /* runLimit */
            if_icmpge 35
        29: .line 347
            aload 6 /* chars */
            iload 13 /* j */
            caload
            istore 14 /* codept */
        30: .line 348
            iload 14 /* codept */
            ldc 55296
            if_icmplt 35
            iload 14 /* codept */
            ldc 56320
            if_icmpge 35
            iload 13 /* j */
            iconst_1
            iadd
            iload 10 /* runLimit */
            if_icmpge 35
        31: .line 349
            aload 6 /* chars */
            iload 13 /* j */
            invokestatic java.lang.Character.codePointAt:([CI)I
            istore 14 /* codept */
        32: .line 350
            iload 14 /* codept */
            ldc 65535
            if_icmple 35
        33: .line 351
            iinc 13 /* j */ 1
        34: .line 352
            goto 59
        35: .line 357
      StackMap locals: int
      StackMap stack:
            iload 13 /* j */
            iload 10 /* runLimit */
            if_icmpeq 36
            iload 14 /* codept */
            bipush 9
            if_icmpne 59
        36: .line 358
      StackMap locals:
      StackMap stack:
            iload 4 /* target */
            iload 12 /* segstart */
            if_icmplt 37
            iload 4 /* target */
            iload 13 /* j */
            if_icmpge 37
            iconst_1
            goto 38
      StackMap locals:
      StackMap stack:
        37: iconst_0
      StackMap locals:
      StackMap stack: int
        38: istore 15 /* inSegment */
        start local 15 // boolean inSegment
        39: .line 360
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            iconst_m1
            if_icmpne 40
            iconst_1
            goto 41
      StackMap locals: int
      StackMap stack:
        40: iconst_0
      StackMap locals:
      StackMap stack: int
        41: iload 11 /* runIsRtl */
            if_icmpne 42
            iconst_1
            goto 43
      StackMap locals:
      StackMap stack:
        42: iconst_0
      StackMap locals:
      StackMap stack: int
        43: istore 16 /* advance */
        start local 16 // boolean advance
        44: .line 361
            iload 15 /* inSegment */
            ifeq 46
            iload 16 /* advance */
            ifeq 46
        45: .line 362
            fload 5 /* h */
            aload 0 /* this */
            iload 12 /* segstart */
            iload 1 /* offset */
            iload 13 /* j */
            iload 11 /* runIsRtl */
            aload 3 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fadd
            freturn
        46: .line 365
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 12 /* segstart */
            iload 13 /* j */
            iload 13 /* j */
            iload 11 /* runIsRtl */
            aload 3 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fstore 17 /* w */
        start local 17 // float w
        47: .line 366
            fload 5 /* h */
            iload 16 /* advance */
            ifeq 48
            fload 17 /* w */
            goto 49
      StackMap locals: android.text.TextLine int int android.graphics.Paint$FontMetricsInt int float char[] int[] int int int int int int int int int float
      StackMap stack: float
        48: fload 17 /* w */
            fneg
      StackMap locals: android.text.TextLine int int android.graphics.Paint$FontMetricsInt int float char[] int[] int int int int int int int int int float
      StackMap stack: float float
        49: fadd
            fstore 5 /* h */
        50: .line 368
            iload 15 /* inSegment */
            ifeq 52
        51: .line 369
            fload 5 /* h */
            aload 0 /* this */
            iload 12 /* segstart */
            iload 1 /* offset */
            iload 13 /* j */
            iload 11 /* runIsRtl */
            aconst_null
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fadd
            freturn
        52: .line 372
      StackMap locals:
      StackMap stack:
            iload 14 /* codept */
            bipush 9
            if_icmpne 58
        53: .line 373
            iload 1 /* offset */
            iload 13 /* j */
            if_icmpne 55
        54: .line 374
            fload 5 /* h */
            freturn
        55: .line 376
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            i2f
            aload 0 /* this */
            fload 5 /* h */
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            i2f
            fmul
            invokevirtual android.text.TextLine.nextTab:(F)F
            fmul
            fstore 5 /* h */
        56: .line 377
            iload 4 /* target */
            iload 13 /* j */
            if_icmpne 58
        57: .line 378
            fload 5 /* h */
            freturn
        58: .line 382
      StackMap locals:
      StackMap stack:
            iload 13 /* j */
            iconst_1
            iadd
            istore 12 /* segstart */
        end local 17 // float w
        end local 16 // boolean advance
        end local 15 // boolean inSegment
        end local 14 // int codept
        59: .line 344
      StackMap locals: android.text.TextLine int int android.graphics.Paint$FontMetricsInt int float char[] int[] int int int int int int
      StackMap stack:
            iinc 13 /* j */ 1
      StackMap locals:
      StackMap stack:
        60: iload 13 /* j */
            iload 10 /* runLimit */
            if_icmple 27
        end local 13 // int j
        end local 12 // int segstart
        end local 11 // boolean runIsRtl
        end local 10 // int runLimit
        end local 9 // int runStart
        61: .line 335
            iinc 8 /* i */ 2
      StackMap locals: android.text.TextLine int int android.graphics.Paint$FontMetricsInt int float char[] int[] int
      StackMap stack:
        62: iload 8 /* i */
            aload 7 /* runs */
            arraylength
            if_icmplt 15
        end local 8 // int i
        63: .line 387
            fload 5 /* h */
            freturn
        end local 7 // int[] runs
        end local 6 // char[] chars
        end local 5 // float h
        end local 4 // int target
        end local 3 // android.graphics.Paint$FontMetricsInt fmi
        end local 2 // boolean trailing
        end local 1 // int offset
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   64     0       this  Landroid/text/TextLine;
            0   64     1     offset  I
            0   64     2   trailing  Z
            0   64     3        fmi  Landroid/graphics/Paint$FontMetricsInt;
            3   64     4     target  I
            6   64     5          h  F
           12   64     6      chars  [C
           13   64     7       runs  [I
           14   63     8          i  I
           16   61     9   runStart  I
           17   61    10   runLimit  I
           22   61    11   runIsRtl  Z
           23   61    12   segstart  I
           26   61    13          j  I
           28   59    14     codept  I
           39   59    15  inSegment  Z
           44   59    16    advance  Z
           47   59    17          w  F
    MethodParameters:
          Name  Flags
      offset    
      trailing  
      fmi       

  float[] measureAllOffsets(boolean[], android.graphics.Paint$FontMetricsInt);
    descriptor: ([ZLandroid/graphics/Paint$FontMetricsInt;)[F
    flags: (0x0000) 
    Code:
      stack=9, locals=21, args_size=3
        start local 0 // android.text.TextLine this
        start local 1 // boolean[] trailing
        start local 2 // android.graphics.Paint$FontMetricsInt fmi
         0: .line 395
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_1
            iadd
            newarray 6
            astore 3 /* measurement */
        start local 3 // float[] measurement
         1: .line 397
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_1
            iadd
            newarray 10
            astore 4 /* target */
        start local 4 // int[] target
         2: .line 398
            iconst_0
            istore 5 /* offset */
        start local 5 // int offset
         3: goto 8
         4: .line 399
      StackMap locals: float[] int[] int
      StackMap stack:
            aload 4 /* target */
            iload 5 /* offset */
            aload 1 /* trailing */
            iload 5 /* offset */
            baload
            ifeq 5
            iload 5 /* offset */
            iconst_1
            isub
            goto 6
      StackMap locals: android.text.TextLine boolean[] android.graphics.Paint$FontMetricsInt float[] int[] int
      StackMap stack: int[] int
         5: iload 5 /* offset */
      StackMap locals: android.text.TextLine boolean[] android.graphics.Paint$FontMetricsInt float[] int[] int
      StackMap stack: int[] int int
         6: iastore
         7: .line 398
            iinc 5 /* offset */ 1
      StackMap locals:
      StackMap stack:
         8: iload 5 /* offset */
            aload 4 /* target */
            arraylength
            if_icmplt 4
        end local 5 // int offset
         9: .line 401
            aload 4 /* target */
            iconst_0
            iaload
            ifge 11
        10: .line 402
            aload 3 /* measurement */
            iconst_0
            fconst_0
            fastore
        11: .line 405
      StackMap locals:
      StackMap stack:
            fconst_0
            fstore 5 /* h */
        start local 5 // float h
        12: .line 407
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifne 27
        13: .line 408
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getstatic android.text.Layout.DIRS_ALL_LEFT_TO_RIGHT:Landroid/text/Layout$Directions;
            if_acmpne 20
        14: .line 409
            iconst_0
            istore 6 /* offset */
        start local 6 // int offset
        15: goto 18
        16: .line 410
      StackMap locals: float int
      StackMap stack:
            aload 3 /* measurement */
            iload 6 /* offset */
            aload 0 /* this */
            iconst_0
            iload 6 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_0
            aload 2 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fastore
        17: .line 409
            iinc 6 /* offset */ 1
      StackMap locals:
      StackMap stack:
        18: iload 6 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmple 16
        end local 6 // int offset
        19: .line 412
            aload 3 /* measurement */
            areturn
        20: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getstatic android.text.Layout.DIRS_ALL_RIGHT_TO_LEFT:Landroid/text/Layout$Directions;
            if_acmpne 27
        21: .line 415
            iconst_0
            istore 6 /* offset */
        start local 6 // int offset
        22: goto 25
        23: .line 416
      StackMap locals: int
      StackMap stack:
            aload 3 /* measurement */
            iload 6 /* offset */
            aload 0 /* this */
            iconst_0
            iload 6 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_1
            aload 2 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fastore
        24: .line 415
            iinc 6 /* offset */ 1
      StackMap locals:
      StackMap stack:
        25: iload 6 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmple 23
        end local 6 // int offset
        26: .line 418
            aload 3 /* measurement */
            areturn
        27: .line 422
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            astore 6 /* chars */
        start local 6 // char[] chars
        28: .line 423
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getfield android.text.Layout$Directions.mDirections:[I
            astore 7 /* runs */
        start local 7 // int[] runs
        29: .line 424
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        30: goto 86
        31: .line 425
      StackMap locals: char[] int[] int
      StackMap stack:
            aload 7 /* runs */
            iload 8 /* i */
            iaload
            istore 9 /* runStart */
        start local 9 // int runStart
        32: .line 426
            iload 9 /* runStart */
            aload 7 /* runs */
            iload 8 /* i */
            iconst_1
            iadd
            iaload
            ldc 67108863
            iand
            iadd
            istore 10 /* runLimit */
        start local 10 // int runLimit
        33: .line 427
            iload 10 /* runLimit */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmple 35
        34: .line 428
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            istore 10 /* runLimit */
        35: .line 430
      StackMap locals: int int
      StackMap stack:
            aload 7 /* runs */
            iload 8 /* i */
            iconst_1
            iadd
            iaload
            ldc 67108864
            iand
            ifeq 36
            iconst_1
            goto 37
      StackMap locals:
      StackMap stack:
        36: iconst_0
      StackMap locals:
      StackMap stack: int
        37: istore 11 /* runIsRtl */
        start local 11 // boolean runIsRtl
        38: .line 432
            iload 9 /* runStart */
            istore 12 /* segstart */
        start local 12 // int segstart
        39: .line 433
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifeq 40
            iload 9 /* runStart */
            goto 41
      StackMap locals: int int
      StackMap stack:
        40: iload 10 /* runLimit */
      StackMap locals:
      StackMap stack: int
        41: istore 13 /* j */
        start local 13 // int j
        42: goto 84
        43: .line 434
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 14 /* codept */
        start local 14 // int codept
        44: .line 435
            aload 0 /* this */
            getfield android.text.TextLine.mHasTabs:Z
            ifeq 51
            iload 13 /* j */
            iload 10 /* runLimit */
            if_icmpge 51
        45: .line 436
            aload 6 /* chars */
            iload 13 /* j */
            caload
            istore 14 /* codept */
        46: .line 437
            iload 14 /* codept */
            ldc 55296
            if_icmplt 51
            iload 14 /* codept */
            ldc 56320
            if_icmpge 51
            iload 13 /* j */
            iconst_1
            iadd
            iload 10 /* runLimit */
            if_icmpge 51
        47: .line 438
            aload 6 /* chars */
            iload 13 /* j */
            invokestatic java.lang.Character.codePointAt:([CI)I
            istore 14 /* codept */
        48: .line 439
            iload 14 /* codept */
            ldc 65535
            if_icmple 51
        49: .line 440
            iinc 13 /* j */ 1
        50: .line 441
            goto 83
        51: .line 446
      StackMap locals: int
      StackMap stack:
            iload 13 /* j */
            iload 10 /* runLimit */
            if_icmpeq 52
            iload 14 /* codept */
            bipush 9
            if_icmpne 83
        52: .line 447
      StackMap locals:
      StackMap stack:
            fload 5 /* h */
            fstore 15 /* oldh */
        start local 15 // float oldh
        53: .line 448
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            iconst_m1
            if_icmpne 54
            iconst_1
            goto 55
      StackMap locals: float
      StackMap stack:
        54: iconst_0
      StackMap locals:
      StackMap stack: int
        55: iload 11 /* runIsRtl */
            if_icmpne 56
            iconst_1
            goto 57
      StackMap locals:
      StackMap stack:
        56: iconst_0
      StackMap locals:
      StackMap stack: int
        57: istore 16 /* advance */
        start local 16 // boolean advance
        58: .line 449
            aload 0 /* this */
            iload 12 /* segstart */
            iload 13 /* j */
            iload 13 /* j */
            iload 11 /* runIsRtl */
            aload 2 /* fmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fstore 17 /* w */
        start local 17 // float w
        59: .line 450
            fload 5 /* h */
            iload 16 /* advance */
            ifeq 60
            fload 17 /* w */
            goto 61
      StackMap locals: android.text.TextLine boolean[] android.graphics.Paint$FontMetricsInt float[] int[] float char[] int[] int int int int int int int float int float
      StackMap stack: float
        60: fload 17 /* w */
            fneg
      StackMap locals: android.text.TextLine boolean[] android.graphics.Paint$FontMetricsInt float[] int[] float char[] int[] int int int int int int int float int float
      StackMap stack: float float
        61: fadd
            fstore 5 /* h */
        62: .line 452
            iload 16 /* advance */
            ifeq 63
            fload 15 /* oldh */
            goto 64
      StackMap locals:
      StackMap stack:
        63: fload 5 /* h */
      StackMap locals:
      StackMap stack: float
        64: fstore 18 /* baseh */
        start local 18 // float baseh
        65: .line 453
            iload 16 /* advance */
            ifeq 66
            aload 2 /* fmi */
            goto 67
      StackMap locals: float
      StackMap stack:
        66: aconst_null
      StackMap locals:
      StackMap stack: android.graphics.Paint$FontMetricsInt
        67: astore 19 /* crtfmi */
        start local 19 // android.graphics.Paint$FontMetricsInt crtfmi
        68: .line 454
            iload 12 /* segstart */
            istore 20 /* offset */
        start local 20 // int offset
        69: goto 75
        70: .line 455
      StackMap locals: android.graphics.Paint$FontMetricsInt int
      StackMap stack:
            aload 4 /* target */
            iload 20 /* offset */
            iaload
            iload 12 /* segstart */
            if_icmplt 74
            aload 4 /* target */
            iload 20 /* offset */
            iaload
            iload 13 /* j */
            if_icmpge 74
        71: .line 456
            aload 3 /* measurement */
            iload 20 /* offset */
        72: .line 457
            fload 18 /* baseh */
            aload 0 /* this */
            iload 12 /* segstart */
            iload 20 /* offset */
            iload 13 /* j */
            iload 11 /* runIsRtl */
            aload 19 /* crtfmi */
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fadd
        73: .line 456
            fastore
        74: .line 454
      StackMap locals:
      StackMap stack:
            iinc 20 /* offset */ 1
      StackMap locals:
      StackMap stack:
        75: iload 20 /* offset */
            iload 13 /* j */
            if_icmpgt 76
            iload 20 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmple 70
        end local 20 // int offset
        76: .line 461
      StackMap locals:
      StackMap stack:
            iload 14 /* codept */
            bipush 9
            if_icmpne 82
        77: .line 462
            aload 4 /* target */
            iload 13 /* j */
            iaload
            iload 13 /* j */
            if_icmpne 79
        78: .line 463
            aload 3 /* measurement */
            iload 13 /* j */
            fload 5 /* h */
            fastore
        79: .line 465
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            i2f
            aload 0 /* this */
            fload 5 /* h */
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            i2f
            fmul
            invokevirtual android.text.TextLine.nextTab:(F)F
            fmul
            fstore 5 /* h */
        80: .line 466
            aload 4 /* target */
            iload 13 /* j */
            iconst_1
            iadd
            iaload
            iload 13 /* j */
            if_icmpne 82
        81: .line 467
            aload 3 /* measurement */
            iload 13 /* j */
            iconst_1
            iadd
            fload 5 /* h */
            fastore
        82: .line 471
      StackMap locals:
      StackMap stack:
            iload 13 /* j */
            iconst_1
            iadd
            istore 12 /* segstart */
        end local 19 // android.graphics.Paint$FontMetricsInt crtfmi
        end local 18 // float baseh
        end local 17 // float w
        end local 16 // boolean advance
        end local 15 // float oldh
        end local 14 // int codept
        83: .line 433
      StackMap locals: android.text.TextLine boolean[] android.graphics.Paint$FontMetricsInt float[] int[] float char[] int[] int int int int int int
      StackMap stack:
            iinc 13 /* j */ 1
      StackMap locals:
      StackMap stack:
        84: iload 13 /* j */
            iload 10 /* runLimit */
            if_icmple 43
        end local 13 // int j
        end local 12 // int segstart
        end local 11 // boolean runIsRtl
        end local 10 // int runLimit
        end local 9 // int runStart
        85: .line 424
            iinc 8 /* i */ 2
      StackMap locals: android.text.TextLine boolean[] android.graphics.Paint$FontMetricsInt float[] int[] float char[] int[] int
      StackMap stack:
        86: iload 8 /* i */
            aload 7 /* runs */
            arraylength
            if_icmplt 31
        end local 8 // int i
        87: .line 475
            aload 4 /* target */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iaload
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmpne 89
        88: .line 476
            aload 3 /* measurement */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            fload 5 /* h */
            fastore
        89: .line 479
      StackMap locals:
      StackMap stack:
            aload 3 /* measurement */
            areturn
        end local 7 // int[] runs
        end local 6 // char[] chars
        end local 5 // float h
        end local 4 // int[] target
        end local 3 // float[] measurement
        end local 2 // android.graphics.Paint$FontMetricsInt fmi
        end local 1 // boolean[] trailing
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   90     0         this  Landroid/text/TextLine;
            0   90     1     trailing  [Z
            0   90     2          fmi  Landroid/graphics/Paint$FontMetricsInt;
            1   90     3  measurement  [F
            2   90     4       target  [I
            3    9     5       offset  I
           12   90     5            h  F
           15   19     6       offset  I
           22   26     6       offset  I
           28   90     6        chars  [C
           29   90     7         runs  [I
           30   87     8            i  I
           32   85     9     runStart  I
           33   85    10     runLimit  I
           38   85    11     runIsRtl  Z
           39   85    12     segstart  I
           42   85    13            j  I
           44   83    14       codept  I
           53   83    15         oldh  F
           58   83    16      advance  Z
           59   83    17            w  F
           65   83    18        baseh  F
           68   83    19       crtfmi  Landroid/graphics/Paint$FontMetricsInt;
           69   76    20       offset  I
    MethodParameters:
          Name  Flags
      trailing  
      fmi       

  private float drawRun(android.graphics.Canvas, int, int, boolean, float, int, int, int, boolean);
    descriptor: (Landroid/graphics/Canvas;IIZFIIIZ)F
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=12, locals=11, args_size=10
        start local 0 // android.text.TextLine this
        start local 1 // android.graphics.Canvas c
        start local 2 // int start
        start local 3 // int limit
        start local 4 // boolean runIsRtl
        start local 5 // float x
        start local 6 // int top
        start local 7 // int y
        start local 8 // int bottom
        start local 9 // boolean needWidth
         0: .line 502
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            iconst_1
            if_icmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: iload 4 /* runIsRtl */
            if_icmpne 8
         3: .line 503
            aload 0 /* this */
            iload 2 /* start */
            iload 3 /* limit */
            iload 3 /* limit */
            iload 4 /* runIsRtl */
            aconst_null
            invokevirtual android.text.TextLine.measureRun:(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
            fneg
            fstore 10 /* w */
        start local 10 // float w
         4: .line 504
            aload 0 /* this */
            iload 2 /* start */
            iload 3 /* limit */
            iload 3 /* limit */
            iload 4 /* runIsRtl */
            aload 1 /* c */
            fload 5 /* x */
            fload 10 /* w */
            fadd
            iload 6 /* top */
         5: .line 505
            iload 7 /* y */
            iload 8 /* bottom */
            aconst_null
            iconst_0
         6: .line 504
            invokevirtual android.text.TextLine.handleRun:(IIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
            pop
         7: .line 506
            fload 10 /* w */
            freturn
        end local 10 // float w
         8: .line 509
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* start */
            iload 3 /* limit */
            iload 3 /* limit */
            iload 4 /* runIsRtl */
            aload 1 /* c */
            fload 5 /* x */
            iload 6 /* top */
         9: .line 510
            iload 7 /* y */
            iload 8 /* bottom */
            aconst_null
            iload 9 /* needWidth */
        10: .line 509
            invokevirtual android.text.TextLine.handleRun:(IIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
            freturn
        end local 9 // boolean needWidth
        end local 8 // int bottom
        end local 7 // int y
        end local 6 // int top
        end local 5 // float x
        end local 4 // boolean runIsRtl
        end local 3 // int limit
        end local 2 // int start
        end local 1 // android.graphics.Canvas c
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Landroid/text/TextLine;
            0   11     1          c  Landroid/graphics/Canvas;
            0   11     2      start  I
            0   11     3      limit  I
            0   11     4   runIsRtl  Z
            0   11     5          x  F
            0   11     6        top  I
            0   11     7          y  I
            0   11     8     bottom  I
            0   11     9  needWidth  Z
            4    8    10          w  F
    MethodParameters:
           Name  Flags
      c          
      start      
      limit      
      runIsRtl   
      x          
      top        
      y          
      bottom     
      needWidth  

  private float measureRun(int, int, int, boolean, android.graphics.Paint$FontMetricsInt);
    descriptor: (IIIZLandroid/graphics/Paint$FontMetricsInt;)F
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=12, locals=6, args_size=6
        start local 0 // android.text.TextLine this
        start local 1 // int start
        start local 2 // int offset
        start local 3 // int limit
        start local 4 // boolean runIsRtl
        start local 5 // android.graphics.Paint$FontMetricsInt fmi
         0: .line 528
            aload 0 /* this */
            iload 1 /* start */
            iload 2 /* offset */
            iload 3 /* limit */
            iload 4 /* runIsRtl */
            aconst_null
            fconst_0
            iconst_0
            iconst_0
            iconst_0
            aload 5 /* fmi */
            iconst_1
            invokevirtual android.text.TextLine.handleRun:(IIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
            freturn
        end local 5 // android.graphics.Paint$FontMetricsInt fmi
        end local 4 // boolean runIsRtl
        end local 3 // int limit
        end local 2 // int offset
        end local 1 // int start
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Landroid/text/TextLine;
            0    1     1     start  I
            0    1     2    offset  I
            0    1     3     limit  I
            0    1     4  runIsRtl  Z
            0    1     5       fmi  Landroid/graphics/Paint$FontMetricsInt;
    MethodParameters:
          Name  Flags
      start     
      offset    
      limit     
      runIsRtl  
      fmi       

  int getOffsetToLeftRightOf(int, boolean);
    descriptor: (IZ)I
    flags: (0x0000) 
    Code:
      stack=7, locals=19, args_size=3
        start local 0 // android.text.TextLine this
        start local 1 // int cursor
        start local 2 // boolean toLeft
         0: .line 561
            iconst_0
            istore 3 /* lineStart */
        start local 3 // int lineStart
         1: .line 562
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            istore 4 /* lineEnd */
        start local 4 // int lineEnd
         2: .line 563
            aload 0 /* this */
            getfield android.text.TextLine.mDir:I
            iconst_m1
            if_icmpne 3
            iconst_1
            goto 4
      StackMap locals: int int
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 5 /* paraIsRtl */
        start local 5 // boolean paraIsRtl
         5: .line 564
            aload 0 /* this */
            getfield android.text.TextLine.mDirections:Landroid/text/Layout$Directions;
            getfield android.text.Layout$Directions.mDirections:[I
            astore 6 /* runs */
        start local 6 // int[] runs
         6: .line 566
            iconst_0
            istore 8 /* runLevel */
        start local 8 // int runLevel
         7: iload 3 /* lineStart */
            istore 9 /* runStart */
        start local 9 // int runStart
         8: iload 4 /* lineEnd */
            istore 10 /* runLimit */
        start local 10 // int runLimit
         9: iconst_m1
            istore 11 /* newCaret */
        start local 11 // int newCaret
        10: .line 567
            iconst_0
            istore 12 /* trailing */
        start local 12 // boolean trailing
        11: .line 569
            iload 1 /* cursor */
            iload 3 /* lineStart */
            if_icmpne 14
        12: .line 570
            bipush -2
            istore 7 /* runIndex */
        start local 7 // int runIndex
        13: .line 571
            goto 72
        end local 7 // int runIndex
      StackMap locals: android.text.TextLine int int int int int int[] top int int int int int
      StackMap stack:
        14: iload 1 /* cursor */
            iload 4 /* lineEnd */
            if_icmpne 17
        15: .line 572
            aload 6 /* runs */
            arraylength
            istore 7 /* runIndex */
        start local 7 // int runIndex
        16: .line 573
            goto 72
        end local 7 // int runIndex
        17: .line 576
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* runIndex */
        start local 7 // int runIndex
        18: goto 54
        19: .line 577
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int
      StackMap stack:
            iload 3 /* lineStart */
            aload 6 /* runs */
            iload 7 /* runIndex */
            iaload
            iadd
            istore 9 /* runStart */
        20: .line 578
            iload 1 /* cursor */
            iload 9 /* runStart */
            if_icmplt 53
        21: .line 579
            iload 9 /* runStart */
            aload 6 /* runs */
            iload 7 /* runIndex */
            iconst_1
            iadd
            iaload
            ldc 67108863
            iand
            iadd
            istore 10 /* runLimit */
        22: .line 580
            iload 10 /* runLimit */
            iload 4 /* lineEnd */
            if_icmple 24
        23: .line 581
            iload 4 /* lineEnd */
            istore 10 /* runLimit */
        24: .line 583
      StackMap locals:
      StackMap stack:
            iload 1 /* cursor */
            iload 10 /* runLimit */
            if_icmpge 53
        25: .line 584
            aload 6 /* runs */
            iload 7 /* runIndex */
            iconst_1
            iadd
            iaload
            bipush 26
            iushr
        26: .line 585
            bipush 63
        27: .line 584
            iand
            istore 8 /* runLevel */
        28: .line 586
            iload 1 /* cursor */
            iload 9 /* runStart */
            if_icmpne 55
        29: .line 591
            iload 1 /* cursor */
            iconst_1
            isub
            istore 17 /* pos */
        start local 17 // int pos
        30: .line 592
            iconst_0
            istore 13 /* prevRunIndex */
        start local 13 // int prevRunIndex
        31: goto 51
        32: .line 593
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int top top top int
      StackMap stack:
            iload 3 /* lineStart */
            aload 6 /* runs */
            iload 13 /* prevRunIndex */
            iaload
            iadd
            istore 15 /* prevRunStart */
        start local 15 // int prevRunStart
        33: .line 594
            iload 17 /* pos */
            iload 15 /* prevRunStart */
            if_icmplt 50
        34: .line 595
            iload 15 /* prevRunStart */
        35: .line 596
            aload 6 /* runs */
            iload 13 /* prevRunIndex */
            iconst_1
            iadd
            iaload
            ldc 67108863
            iand
        36: .line 595
            iadd
            istore 16 /* prevRunLimit */
        start local 16 // int prevRunLimit
        37: .line 597
            iload 16 /* prevRunLimit */
            iload 4 /* lineEnd */
            if_icmple 39
        38: .line 598
            iload 4 /* lineEnd */
            istore 16 /* prevRunLimit */
        39: .line 600
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int top int int int
      StackMap stack:
            iload 17 /* pos */
            iload 16 /* prevRunLimit */
            if_icmpge 50
        40: .line 601
            aload 6 /* runs */
            iload 13 /* prevRunIndex */
            iconst_1
            iadd
            iaload
            bipush 26
            iushr
        41: .line 602
            bipush 63
        42: .line 601
            iand
            istore 14 /* prevRunLevel */
        start local 14 // int prevRunLevel
        43: .line 603
            iload 14 /* prevRunLevel */
            iload 8 /* runLevel */
            if_icmpge 50
        44: .line 605
            iload 13 /* prevRunIndex */
            istore 7 /* runIndex */
        45: .line 606
            iload 14 /* prevRunLevel */
            istore 8 /* runLevel */
        46: .line 607
            iload 15 /* prevRunStart */
            istore 9 /* runStart */
        47: .line 608
            iload 16 /* prevRunLimit */
            istore 10 /* runLimit */
        48: .line 609
            iconst_1
            istore 12 /* trailing */
        49: .line 610
            goto 55
        end local 16 // int prevRunLimit
        end local 14 // int prevRunLevel
        50: .line 592
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int top int top int
      StackMap stack:
            iinc 13 /* prevRunIndex */ 2
        end local 15 // int prevRunStart
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int top top top int
      StackMap stack:
        51: iload 13 /* prevRunIndex */
            aload 6 /* runs */
            arraylength
            if_icmplt 32
        end local 17 // int pos
        end local 13 // int prevRunIndex
        52: .line 616
            goto 55
        53: .line 576
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int
      StackMap stack:
            iinc 7 /* runIndex */ 2
      StackMap locals:
      StackMap stack:
        54: iload 7 /* runIndex */
            aload 6 /* runs */
            arraylength
            if_icmplt 19
        55: .line 626
      StackMap locals:
      StackMap stack:
            iload 7 /* runIndex */
            aload 6 /* runs */
            arraylength
            if_icmpeq 72
        56: .line 627
            iload 8 /* runLevel */
            iconst_1
            iand
            ifeq 57
            iconst_1
            goto 58
      StackMap locals:
      StackMap stack:
        57: iconst_0
      StackMap locals:
      StackMap stack: int
        58: istore 13 /* runIsRtl */
        start local 13 // boolean runIsRtl
        59: .line 628
            iload 2 /* toLeft */
            iload 13 /* runIsRtl */
            if_icmpne 60
            iconst_1
            goto 61
      StackMap locals: int
      StackMap stack:
        60: iconst_0
      StackMap locals:
      StackMap stack: int
        61: istore 14 /* advance */
        start local 14 // boolean advance
        62: .line 629
            iload 1 /* cursor */
            iload 14 /* advance */
            ifeq 63
            iload 10 /* runLimit */
            goto 64
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int
      StackMap stack: int
        63: iload 9 /* runStart */
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int
      StackMap stack: int int
        64: if_icmpne 65
            iload 14 /* advance */
            iload 12 /* trailing */
            if_icmpeq 72
        65: .line 631
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* runIndex */
            iload 9 /* runStart */
            iload 10 /* runLimit */
        66: .line 632
            iload 13 /* runIsRtl */
            iload 1 /* cursor */
            iload 14 /* advance */
        67: .line 631
            invokevirtual android.text.TextLine.getOffsetBeforeAfter:(IIIZIZ)I
            istore 11 /* newCaret */
        68: .line 635
            iload 11 /* newCaret */
            iload 14 /* advance */
            ifeq 69
            iload 10 /* runLimit */
            goto 70
      StackMap locals:
      StackMap stack: int
        69: iload 9 /* runStart */
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int
      StackMap stack: int int
        70: if_icmpeq 72
        71: .line 636
            iload 11 /* newCaret */
            ireturn
        end local 14 // boolean advance
        end local 13 // boolean runIsRtl
        72: .line 648
      StackMap locals:
      StackMap stack:
            iload 2 /* toLeft */
            iload 5 /* paraIsRtl */
            if_icmpne 73
            iconst_1
            goto 74
      StackMap locals:
      StackMap stack:
        73: iconst_0
      StackMap locals:
      StackMap stack: int
        74: istore 13 /* advance */
        start local 13 // boolean advance
        75: .line 649
            iload 7 /* runIndex */
            iload 13 /* advance */
            ifeq 76
            iconst_2
            goto 77
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int
      StackMap stack: int
        76: bipush -2
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int
      StackMap stack: int int
        77: iadd
            istore 14 /* otherRunIndex */
        start local 14 // int otherRunIndex
        78: .line 650
            iload 14 /* otherRunIndex */
            iflt 112
            iload 14 /* otherRunIndex */
            aload 6 /* runs */
            arraylength
            if_icmpge 112
        79: .line 651
            iload 3 /* lineStart */
            aload 6 /* runs */
            iload 14 /* otherRunIndex */
            iaload
            iadd
            istore 15 /* otherRunStart */
        start local 15 // int otherRunStart
        80: .line 652
            iload 15 /* otherRunStart */
        81: .line 653
            aload 6 /* runs */
            iload 14 /* otherRunIndex */
            iconst_1
            iadd
            iaload
            ldc 67108863
            iand
        82: .line 652
            iadd
            istore 16 /* otherRunLimit */
        start local 16 // int otherRunLimit
        83: .line 654
            iload 16 /* otherRunLimit */
            iload 4 /* lineEnd */
            if_icmple 85
        84: .line 655
            iload 4 /* lineEnd */
            istore 16 /* otherRunLimit */
        85: .line 657
      StackMap locals: int int int
      StackMap stack:
            aload 6 /* runs */
            iload 14 /* otherRunIndex */
            iconst_1
            iadd
            iaload
            bipush 26
            iushr
        86: .line 658
            bipush 63
        87: .line 657
            iand
            istore 17 /* otherRunLevel */
        start local 17 // int otherRunLevel
        88: .line 659
            iload 17 /* otherRunLevel */
            iconst_1
            iand
            ifeq 89
            iconst_1
            goto 90
      StackMap locals: int
      StackMap stack:
        89: iconst_0
      StackMap locals:
      StackMap stack: int
        90: istore 18 /* otherRunIsRtl */
        start local 18 // boolean otherRunIsRtl
        91: .line 661
            iload 2 /* toLeft */
            iload 18 /* otherRunIsRtl */
            if_icmpne 92
            iconst_1
            goto 93
      StackMap locals: int
      StackMap stack:
        92: iconst_0
      StackMap locals:
      StackMap stack: int
        93: istore 13 /* advance */
        94: .line 662
            iload 11 /* newCaret */
            iconst_m1
            if_icmpne 107
        95: .line 663
            aload 0 /* this */
            iload 14 /* otherRunIndex */
            iload 15 /* otherRunStart */
        96: .line 664
            iload 16 /* otherRunLimit */
            iload 18 /* otherRunIsRtl */
        97: .line 665
            iload 13 /* advance */
            ifeq 98
            iload 15 /* otherRunStart */
            goto 99
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int int int int int
      StackMap stack: android.text.TextLine int int int int
        98: iload 16 /* otherRunLimit */
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int int int int int
      StackMap stack: android.text.TextLine int int int int int
        99: iload 13 /* advance */
       100: .line 663
            invokevirtual android.text.TextLine.getOffsetBeforeAfter:(IIIZIZ)I
            istore 11 /* newCaret */
       101: .line 666
            iload 11 /* newCaret */
            iload 13 /* advance */
            ifeq 102
            iload 16 /* otherRunLimit */
            goto 103
      StackMap locals:
      StackMap stack: int
       102: iload 15 /* otherRunStart */
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int int int int int
      StackMap stack: int int
       103: if_icmpne 121
       104: .line 669
            iload 14 /* otherRunIndex */
            istore 7 /* runIndex */
       105: .line 670
            iload 17 /* otherRunLevel */
            istore 8 /* runLevel */
       106: .line 671
            goto 72
       107: .line 677
      StackMap locals:
      StackMap stack:
            iload 17 /* otherRunLevel */
            iload 8 /* runLevel */
            if_icmpge 121
       108: .line 679
            iload 13 /* advance */
            ifeq 109
            iload 15 /* otherRunStart */
            goto 110
      StackMap locals:
      StackMap stack:
       109: iload 16 /* otherRunLimit */
      StackMap locals:
      StackMap stack: int
       110: istore 11 /* newCaret */
       111: .line 681
            goto 121
        end local 18 // boolean otherRunIsRtl
        end local 17 // int otherRunLevel
        end local 16 // int otherRunLimit
        end local 15 // int otherRunStart
       112: .line 684
      StackMap locals: android.text.TextLine int int int int int int[] int int int int int int int int
      StackMap stack:
            iload 11 /* newCaret */
            iconst_m1
            if_icmpne 117
       113: .line 688
            iload 13 /* advance */
            ifeq 114
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            iconst_1
            iadd
            goto 115
      StackMap locals:
      StackMap stack:
       114: iconst_m1
      StackMap locals:
      StackMap stack: int
       115: istore 11 /* newCaret */
       116: .line 689
            goto 121
       117: .line 700
      StackMap locals:
      StackMap stack:
            iload 11 /* newCaret */
            iload 4 /* lineEnd */
            if_icmpgt 121
       118: .line 701
            iload 13 /* advance */
            ifeq 119
            iload 4 /* lineEnd */
            goto 120
      StackMap locals:
      StackMap stack:
       119: iload 3 /* lineStart */
      StackMap locals:
      StackMap stack: int
       120: istore 11 /* newCaret */
        end local 14 // int otherRunIndex
        end local 13 // boolean advance
       121: .line 706
      StackMap locals:
      StackMap stack:
            iload 11 /* newCaret */
            ireturn
        end local 12 // boolean trailing
        end local 11 // int newCaret
        end local 10 // int runLimit
        end local 9 // int runStart
        end local 8 // int runLevel
        end local 7 // int runIndex
        end local 6 // int[] runs
        end local 5 // boolean paraIsRtl
        end local 4 // int lineEnd
        end local 3 // int lineStart
        end local 2 // boolean toLeft
        end local 1 // int cursor
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0  122     0           this  Landroid/text/TextLine;
            0  122     1         cursor  I
            0  122     2         toLeft  Z
            1  122     3      lineStart  I
            2  122     4        lineEnd  I
            5  122     5      paraIsRtl  Z
            6  122     6           runs  [I
           13   14     7       runIndex  I
           16   17     7       runIndex  I
           18  122     7       runIndex  I
            7  122     8       runLevel  I
            8  122     9       runStart  I
            9  122    10       runLimit  I
           10  122    11       newCaret  I
           11  122    12       trailing  Z
           31   52    13   prevRunIndex  I
           43   50    14   prevRunLevel  I
           33   51    15   prevRunStart  I
           37   50    16   prevRunLimit  I
           30   52    17            pos  I
           59   72    13       runIsRtl  Z
           62   72    14        advance  Z
           75  121    13        advance  Z
           78  121    14  otherRunIndex  I
           80  112    15  otherRunStart  I
           83  112    16  otherRunLimit  I
           88  112    17  otherRunLevel  I
           91  112    18  otherRunIsRtl  Z
    MethodParameters:
        Name  Flags
      cursor  
      toLeft  

  private int getOffsetBeforeAfter(int, int, int, boolean, int, boolean);
    descriptor: (IIIZIZ)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=16, args_size=7
        start local 0 // android.text.TextLine this
        start local 1 // int runIndex
        start local 2 // int runStart
        start local 3 // int runLimit
        start local 4 // boolean runIsRtl
        start local 5 // int offset
        start local 6 // boolean after
         0: .line 729
            iload 1 /* runIndex */
            iflt 3
            iload 5 /* offset */
            iload 6 /* after */
            ifeq 1
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            goto 2
      StackMap locals:
      StackMap stack: int
         1: iconst_0
      StackMap locals: android.text.TextLine int int int int int int
      StackMap stack: int int
         2: if_icmpne 6
         3: .line 733
      StackMap locals:
      StackMap stack:
            iload 6 /* after */
            ifeq 5
         4: .line 734
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 5 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iadd
            invokestatic android.text.TextUtils.getOffsetAfter:(Ljava/lang/CharSequence;I)I
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            isub
            ireturn
         5: .line 736
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 5 /* offset */
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iadd
            invokestatic android.text.TextUtils.getOffsetBefore:(Ljava/lang/CharSequence;I)I
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            isub
            ireturn
         6: .line 739
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mWorkPaint:Landroid/text/TextPaint;
            astore 7 /* wp */
        start local 7 // android.text.TextPaint wp
         7: .line 740
            aload 7 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
         8: .line 741
            aload 7 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mAddedWidth:F
            invokevirtual android.text.TextPaint.setWordSpacing:(F)V
         9: .line 743
            iload 2 /* runStart */
            istore 8 /* spanStart */
        start local 8 // int spanStart
        10: .line 745
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            ifnonnull 13
        11: .line 746
            iload 3 /* runLimit */
            istore 9 /* spanLimit */
        start local 9 // int spanLimit
        12: .line 747
            goto 45
        end local 9 // int spanLimit
        13: .line 748
      StackMap locals: android.text.TextPaint int
      StackMap stack:
            iload 6 /* after */
            ifeq 14
            iload 5 /* offset */
            iconst_1
            iadd
            goto 15
      StackMap locals:
      StackMap stack:
        14: iload 5 /* offset */
      StackMap locals:
      StackMap stack: int
        15: istore 10 /* target */
        start local 10 // int target
        16: .line 749
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 3 /* runLimit */
            iadd
            istore 11 /* limit */
        start local 11 // int limit
        17: .line 751
      StackMap locals: android.text.TextLine int int int int int int android.text.TextPaint int top int int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 8 /* spanStart */
            iadd
            iload 11 /* limit */
        18: .line 752
            ldc Landroid/text/style/MetricAffectingSpan;
        19: .line 751
            invokeinterface android.text.Spanned.nextSpanTransition:(IILjava/lang/Class;)I
        20: .line 752
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
        21: .line 751
            isub
            istore 9 /* spanLimit */
        start local 9 // int spanLimit
        22: .line 753
            iload 9 /* spanLimit */
            iload 10 /* target */
            if_icmplt 24
        23: .line 754
            goto 26
        24: .line 756
      StackMap locals: android.text.TextLine int int int int int int android.text.TextPaint int int int int
      StackMap stack:
            iload 9 /* spanLimit */
            istore 8 /* spanStart */
        end local 9 // int spanLimit
        25: .line 750
            goto 17
        start local 9 // int spanLimit
        26: .line 759
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 8 /* spanStart */
            iadd
        27: .line 760
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 9 /* spanLimit */
            iadd
            ldc Landroid/text/style/MetricAffectingSpan;
        28: .line 759
            invokeinterface android.text.Spanned.getSpans:(IILjava/lang/Class;)[Ljava/lang/Object;
            checkcast android.text.style.MetricAffectingSpan[]
            astore 12 /* spans */
        start local 12 // android.text.style.MetricAffectingSpan[] spans
        29: .line 761
            aload 12 /* spans */
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            ldc Landroid/text/style/MetricAffectingSpan;
            invokestatic android.text.TextUtils.removeEmptySpans:([Ljava/lang/Object;Landroid/text/Spanned;Ljava/lang/Class;)[Ljava/lang/Object;
            checkcast android.text.style.MetricAffectingSpan[]
            astore 12 /* spans */
        30: .line 763
            aload 12 /* spans */
            arraylength
            ifle 45
        31: .line 764
            aconst_null
            astore 13 /* replacement */
        start local 13 // android.text.style.ReplacementSpan replacement
        32: .line 765
            iconst_0
            istore 14 /* j */
        start local 14 // int j
        33: goto 40
        34: .line 766
      StackMap locals: android.text.style.MetricAffectingSpan[] android.text.style.ReplacementSpan int
      StackMap stack:
            aload 12 /* spans */
            iload 14 /* j */
            aaload
            astore 15 /* span */
        start local 15 // android.text.style.MetricAffectingSpan span
        35: .line 767
            aload 15 /* span */
            instanceof android.text.style.ReplacementSpan
            ifeq 38
        36: .line 768
            aload 15 /* span */
            checkcast android.text.style.ReplacementSpan
            astore 13 /* replacement */
        37: .line 769
            goto 39
        38: .line 770
      StackMap locals: android.text.style.MetricAffectingSpan
      StackMap stack:
            aload 15 /* span */
            aload 7 /* wp */
            invokevirtual android.text.style.MetricAffectingSpan.updateMeasureState:(Landroid/text/TextPaint;)V
        end local 15 // android.text.style.MetricAffectingSpan span
        39: .line 765
      StackMap locals:
      StackMap stack:
            iinc 14 /* j */ 1
      StackMap locals:
      StackMap stack:
        40: iload 14 /* j */
            aload 12 /* spans */
            arraylength
            if_icmplt 34
        end local 14 // int j
        41: .line 774
            aload 13 /* replacement */
            ifnull 45
        42: .line 777
            iload 6 /* after */
            ifeq 43
            iload 9 /* spanLimit */
            goto 44
      StackMap locals:
      StackMap stack:
        43: iload 8 /* spanStart */
      StackMap locals:
      StackMap stack: int
        44: ireturn
        end local 13 // android.text.style.ReplacementSpan replacement
        end local 12 // android.text.style.MetricAffectingSpan[] spans
        end local 11 // int limit
        end local 10 // int target
        45: .line 782
      StackMap locals: android.text.TextLine int int int int int int android.text.TextPaint int int
      StackMap stack:
            iload 4 /* runIsRtl */
            ifeq 46
            iconst_1
            goto 47
      StackMap locals:
      StackMap stack:
        46: iconst_0
      StackMap locals:
      StackMap stack: int
        47: istore 10 /* dir */
        start local 10 // int dir
        48: .line 783
            iload 6 /* after */
            ifeq 49
            iconst_0
            goto 50
      StackMap locals: int
      StackMap stack:
        49: iconst_2
      StackMap locals:
      StackMap stack: int
        50: istore 11 /* cursorOpt */
        start local 11 // int cursorOpt
        51: .line 784
            aload 0 /* this */
            getfield android.text.TextLine.mCharsValid:Z
            ifeq 55
        52: .line 785
            aload 7 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iload 8 /* spanStart */
            iload 9 /* spanLimit */
            iload 8 /* spanStart */
            isub
        53: .line 786
            iload 10 /* dir */
            iload 5 /* offset */
            iload 11 /* cursorOpt */
        54: .line 785
            invokevirtual android.text.TextPaint.getTextRunCursor:([CIIIII)I
            ireturn
        55: .line 788
      StackMap locals: int
      StackMap stack:
            aload 7 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 8 /* spanStart */
            iadd
        56: .line 789
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 9 /* spanLimit */
            iadd
            iload 10 /* dir */
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 5 /* offset */
            iadd
            iload 11 /* cursorOpt */
        57: .line 788
            invokevirtual android.text.TextPaint.getTextRunCursor:(Ljava/lang/CharSequence;IIIII)I
        58: .line 789
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
        59: .line 788
            isub
            ireturn
        end local 11 // int cursorOpt
        end local 10 // int dir
        end local 9 // int spanLimit
        end local 8 // int spanStart
        end local 7 // android.text.TextPaint wp
        end local 6 // boolean after
        end local 5 // int offset
        end local 4 // boolean runIsRtl
        end local 3 // int runLimit
        end local 2 // int runStart
        end local 1 // int runIndex
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   60     0         this  Landroid/text/TextLine;
            0   60     1     runIndex  I
            0   60     2     runStart  I
            0   60     3     runLimit  I
            0   60     4     runIsRtl  Z
            0   60     5       offset  I
            0   60     6        after  Z
            7   60     7           wp  Landroid/text/TextPaint;
           10   60     8    spanStart  I
           12   13     9    spanLimit  I
           22   25     9    spanLimit  I
           26   60     9    spanLimit  I
           16   45    10       target  I
           17   45    11        limit  I
           29   45    12        spans  [Landroid/text/style/MetricAffectingSpan;
           32   45    13  replacement  Landroid/text/style/ReplacementSpan;
           33   41    14            j  I
           35   39    15         span  Landroid/text/style/MetricAffectingSpan;
           48   60    10          dir  I
           51   60    11    cursorOpt  I
    MethodParameters:
          Name  Flags
      runIndex  
      runStart  
      runLimit  
      runIsRtl  
      offset    
      after     

  private static void expandMetricsFromPaint(android.graphics.Paint$FontMetricsInt, android.text.TextPaint);
    descriptor: (Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // android.graphics.Paint$FontMetricsInt fmi
        start local 1 // android.text.TextPaint wp
         0: .line 797
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.top:I
            istore 2 /* previousTop */
        start local 2 // int previousTop
         1: .line 798
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.ascent:I
            istore 3 /* previousAscent */
        start local 3 // int previousAscent
         2: .line 799
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.descent:I
            istore 4 /* previousDescent */
        start local 4 // int previousDescent
         3: .line 800
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.bottom:I
            istore 5 /* previousBottom */
        start local 5 // int previousBottom
         4: .line 801
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.leading:I
            istore 6 /* previousLeading */
        start local 6 // int previousLeading
         5: .line 803
            aload 1 /* wp */
            aload 0 /* fmi */
            invokevirtual android.text.TextPaint.getFontMetricsInt:(Landroid/graphics/Paint$FontMetricsInt;)I
            pop
         6: .line 805
            aload 0 /* fmi */
            iload 2 /* previousTop */
            iload 3 /* previousAscent */
            iload 4 /* previousDescent */
            iload 5 /* previousBottom */
         7: .line 806
            iload 6 /* previousLeading */
         8: .line 805
            invokestatic android.text.TextLine.updateMetrics:(Landroid/graphics/Paint$FontMetricsInt;IIIII)V
         9: .line 807
            return
        end local 6 // int previousLeading
        end local 5 // int previousBottom
        end local 4 // int previousDescent
        end local 3 // int previousAscent
        end local 2 // int previousTop
        end local 1 // android.text.TextPaint wp
        end local 0 // android.graphics.Paint$FontMetricsInt fmi
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0              fmi  Landroid/graphics/Paint$FontMetricsInt;
            0   10     1               wp  Landroid/text/TextPaint;
            1   10     2      previousTop  I
            2   10     3   previousAscent  I
            3   10     4  previousDescent  I
            4   10     5   previousBottom  I
            5   10     6  previousLeading  I
    MethodParameters:
      Name  Flags
      fmi   
      wp    

  static void updateMetrics(android.graphics.Paint$FontMetricsInt, int, int, int, int, int);
    descriptor: (Landroid/graphics/Paint$FontMetricsInt;IIIII)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=6, args_size=6
        start local 0 // android.graphics.Paint$FontMetricsInt fmi
        start local 1 // int previousTop
        start local 2 // int previousAscent
        start local 3 // int previousDescent
        start local 4 // int previousBottom
        start local 5 // int previousLeading
         0: .line 811
            aload 0 /* fmi */
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.top:I
            iload 1 /* previousTop */
            invokestatic java.lang.Math.min:(II)I
            putfield android.graphics.Paint$FontMetricsInt.top:I
         1: .line 812
            aload 0 /* fmi */
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.ascent:I
            iload 2 /* previousAscent */
            invokestatic java.lang.Math.min:(II)I
            putfield android.graphics.Paint$FontMetricsInt.ascent:I
         2: .line 813
            aload 0 /* fmi */
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.descent:I
            iload 3 /* previousDescent */
            invokestatic java.lang.Math.max:(II)I
            putfield android.graphics.Paint$FontMetricsInt.descent:I
         3: .line 814
            aload 0 /* fmi */
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.bottom:I
            iload 4 /* previousBottom */
            invokestatic java.lang.Math.max:(II)I
            putfield android.graphics.Paint$FontMetricsInt.bottom:I
         4: .line 815
            aload 0 /* fmi */
            aload 0 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.leading:I
            iload 5 /* previousLeading */
            invokestatic java.lang.Math.max:(II)I
            putfield android.graphics.Paint$FontMetricsInt.leading:I
         5: .line 816
            return
        end local 5 // int previousLeading
        end local 4 // int previousBottom
        end local 3 // int previousDescent
        end local 2 // int previousAscent
        end local 1 // int previousTop
        end local 0 // android.graphics.Paint$FontMetricsInt fmi
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0              fmi  Landroid/graphics/Paint$FontMetricsInt;
            0    6     1      previousTop  I
            0    6     2   previousAscent  I
            0    6     3  previousDescent  I
            0    6     4   previousBottom  I
            0    6     5  previousLeading  I
    MethodParameters:
                 Name  Flags
      fmi              
      previousTop      
      previousAscent   
      previousDescent  
      previousBottom   
      previousLeading  

  private static void drawStroke(android.text.TextPaint, android.graphics.Canvas, int, float, float, float, float, float);
    descriptor: (Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=8
        start local 0 // android.text.TextPaint wp
        start local 1 // android.graphics.Canvas c
        start local 2 // int color
        start local 3 // float position
        start local 4 // float thickness
        start local 5 // float xleft
        start local 6 // float xright
        start local 7 // float baseline
         0: .line 820
            fload 7 /* baseline */
            aload 0 /* wp */
            getfield android.text.TextPaint.baselineShift:I
            i2f
            fadd
            fload 3 /* position */
            fadd
            fstore 8 /* strokeTop */
        start local 8 // float strokeTop
         1: .line 822
            aload 0 /* wp */
            invokevirtual android.text.TextPaint.getColor:()I
            istore 9 /* previousColor */
        start local 9 // int previousColor
         2: .line 823
            aload 0 /* wp */
            invokevirtual android.text.TextPaint.getStyle:()Landroid/graphics/Paint$Style;
            astore 10 /* previousStyle */
        start local 10 // android.graphics.Paint$Style previousStyle
         3: .line 824
            aload 0 /* wp */
            invokevirtual android.text.TextPaint.isAntiAlias:()Z
            istore 11 /* previousAntiAlias */
        start local 11 // boolean previousAntiAlias
         4: .line 826
            aload 0 /* wp */
            getstatic android.graphics.Paint$Style.FILL:Landroid/graphics/Paint$Style;
            invokevirtual android.text.TextPaint.setStyle:(Landroid/graphics/Paint$Style;)V
         5: .line 827
            aload 0 /* wp */
            iconst_1
            invokevirtual android.text.TextPaint.setAntiAlias:(Z)V
         6: .line 829
            aload 0 /* wp */
            iload 2 /* color */
            invokevirtual android.text.TextPaint.setColor:(I)V
         7: .line 830
            aload 1 /* c */
            fload 5 /* xleft */
            fload 8 /* strokeTop */
            fload 6 /* xright */
            fload 8 /* strokeTop */
            fload 4 /* thickness */
            fadd
            aload 0 /* wp */
            invokevirtual android.graphics.Canvas.drawRect:(FFFFLandroid/graphics/Paint;)V
         8: .line 832
            aload 0 /* wp */
            aload 10 /* previousStyle */
            invokevirtual android.text.TextPaint.setStyle:(Landroid/graphics/Paint$Style;)V
         9: .line 833
            aload 0 /* wp */
            iload 9 /* previousColor */
            invokevirtual android.text.TextPaint.setColor:(I)V
        10: .line 834
            aload 0 /* wp */
            iload 11 /* previousAntiAlias */
            invokevirtual android.text.TextPaint.setAntiAlias:(Z)V
        11: .line 835
            return
        end local 11 // boolean previousAntiAlias
        end local 10 // android.graphics.Paint$Style previousStyle
        end local 9 // int previousColor
        end local 8 // float strokeTop
        end local 7 // float baseline
        end local 6 // float xright
        end local 5 // float xleft
        end local 4 // float thickness
        end local 3 // float position
        end local 2 // int color
        end local 1 // android.graphics.Canvas c
        end local 0 // android.text.TextPaint wp
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0                 wp  Landroid/text/TextPaint;
            0   12     1                  c  Landroid/graphics/Canvas;
            0   12     2              color  I
            0   12     3           position  F
            0   12     4          thickness  F
            0   12     5              xleft  F
            0   12     6             xright  F
            0   12     7           baseline  F
            1   12     8          strokeTop  F
            2   12     9      previousColor  I
            3   12    10      previousStyle  Landroid/graphics/Paint$Style;
            4   12    11  previousAntiAlias  Z
    MethodParameters:
           Name  Flags
      wp         
      c          
      color      
      position   
      thickness  
      xleft      
      xright     
      baseline   

  private float getRunAdvance(android.text.TextPaint, int, int, int, int, boolean, int);
    descriptor: (Landroid/text/TextPaint;IIIIZI)F
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=9, args_size=8
        start local 0 // android.text.TextLine this
        start local 1 // android.text.TextPaint wp
        start local 2 // int start
        start local 3 // int end
        start local 4 // int contextStart
        start local 5 // int contextEnd
        start local 6 // boolean runIsRtl
        start local 7 // int offset
         0: .line 839
            aload 0 /* this */
            getfield android.text.TextLine.mCharsValid:Z
            ifeq 2
         1: .line 840
            aload 1 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iload 2 /* start */
            iload 3 /* end */
            iload 4 /* contextStart */
            iload 5 /* contextEnd */
            iload 6 /* runIsRtl */
            iload 7 /* offset */
            invokevirtual android.text.TextPaint.getRunAdvance:([CIIIIZI)F
            freturn
         2: .line 842
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            istore 8 /* delta */
        start local 8 // int delta
         3: .line 843
            aload 0 /* this */
            getfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
            ifnonnull 7
         4: .line 845
            aload 1 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 8 /* delta */
            iload 2 /* start */
            iadd
            iload 8 /* delta */
            iload 3 /* end */
            iadd
         5: .line 846
            iload 8 /* delta */
            iload 4 /* contextStart */
            iadd
            iload 8 /* delta */
            iload 5 /* contextEnd */
            iadd
            iload 6 /* runIsRtl */
            iload 8 /* delta */
            iload 7 /* offset */
            iadd
         6: .line 845
            invokevirtual android.text.TextPaint.getRunAdvance:(Ljava/lang/CharSequence;IIIIZI)F
            freturn
         7: .line 848
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mComputed:Landroid/text/PrecomputedText;
            iload 2 /* start */
            iload 8 /* delta */
            iadd
            iload 3 /* end */
            iload 8 /* delta */
            iadd
            invokevirtual android.text.PrecomputedText.getWidth:(II)F
            freturn
        end local 8 // int delta
        end local 7 // int offset
        end local 6 // boolean runIsRtl
        end local 5 // int contextEnd
        end local 4 // int contextStart
        end local 3 // int end
        end local 2 // int start
        end local 1 // android.text.TextPaint wp
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Landroid/text/TextLine;
            0    8     1            wp  Landroid/text/TextPaint;
            0    8     2         start  I
            0    8     3           end  I
            0    8     4  contextStart  I
            0    8     5    contextEnd  I
            0    8     6      runIsRtl  Z
            0    8     7        offset  I
            3    8     8         delta  I
    MethodParameters:
              Name  Flags
      wp            
      start         
      end           
      contextStart  
      contextEnd    
      runIsRtl      
      offset        

  private float handleText(android.text.TextPaint, int, int, int, int, boolean, android.graphics.Canvas, float, int, int, int, android.graphics.Paint$FontMetricsInt, boolean, int, java.util.ArrayList<android.text.TextLine$DecorationInfo>);
    descriptor: (Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;)F
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=11, locals=29, args_size=16
        start local 0 // android.text.TextLine this
        start local 1 // android.text.TextPaint wp
        start local 2 // int start
        start local 3 // int end
        start local 4 // int contextStart
        start local 5 // int contextEnd
        start local 6 // boolean runIsRtl
        start local 7 // android.graphics.Canvas c
        start local 8 // float x
        start local 9 // int top
        start local 10 // int y
        start local 11 // int bottom
        start local 12 // android.graphics.Paint$FontMetricsInt fmi
        start local 13 // boolean needWidth
        start local 14 // int offset
        start local 15 // java.util.ArrayList decorations
         0: .line 879
            aload 1 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mAddedWidth:F
            invokevirtual android.text.TextPaint.setWordSpacing:(F)V
         1: .line 881
            aload 12 /* fmi */
            ifnull 3
         2: .line 882
            aload 12 /* fmi */
            aload 1 /* wp */
            invokestatic android.text.TextLine.expandMetricsFromPaint:(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V
         3: .line 886
      StackMap locals:
      StackMap stack:
            iload 3 /* end */
            iload 2 /* start */
            if_icmpne 5
         4: .line 887
            fconst_0
            freturn
         5: .line 890
      StackMap locals:
      StackMap stack:
            fconst_0
            fstore 16 /* totalWidth */
        start local 16 // float totalWidth
         6: .line 892
            aload 15 /* decorations */
            ifnonnull 7
            iconst_0
            goto 8
      StackMap locals: float
      StackMap stack:
         7: aload 15 /* decorations */
            invokevirtual java.util.ArrayList.size:()I
      StackMap locals:
      StackMap stack: int
         8: istore 17 /* numDecorations */
        start local 17 // int numDecorations
         9: .line 893
            iload 13 /* needWidth */
            ifne 10
            aload 7 /* c */
            ifnull 11
            aload 1 /* wp */
            getfield android.text.TextPaint.bgColor:I
            ifne 10
            iload 17 /* numDecorations */
            ifne 10
            iload 6 /* runIsRtl */
            ifeq 11
        10: .line 894
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* wp */
            iload 2 /* start */
            iload 3 /* end */
            iload 4 /* contextStart */
            iload 5 /* contextEnd */
            iload 6 /* runIsRtl */
            iload 14 /* offset */
            invokevirtual android.text.TextLine.getRunAdvance:(Landroid/text/TextPaint;IIIIZI)F
            fstore 16 /* totalWidth */
        11: .line 897
      StackMap locals:
      StackMap stack:
            aload 7 /* c */
            ifnull 65
        12: .line 899
            iload 6 /* runIsRtl */
            ifeq 16
        13: .line 900
            fload 8 /* x */
            fload 16 /* totalWidth */
            fsub
            fstore 18 /* leftX */
        start local 18 // float leftX
        14: .line 901
            fload 8 /* x */
            fstore 19 /* rightX */
        start local 19 // float rightX
        15: .line 902
            goto 18
        end local 19 // float rightX
        end local 18 // float leftX
        16: .line 903
      StackMap locals:
      StackMap stack:
            fload 8 /* x */
            fstore 18 /* leftX */
        start local 18 // float leftX
        17: .line 904
            fload 8 /* x */
            fload 16 /* totalWidth */
            fadd
            fstore 19 /* rightX */
        start local 19 // float rightX
        18: .line 907
      StackMap locals: float float
      StackMap stack:
            aload 1 /* wp */
            getfield android.text.TextPaint.bgColor:I
            ifeq 26
        19: .line 908
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getColor:()I
            istore 20 /* previousColor */
        start local 20 // int previousColor
        20: .line 909
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getStyle:()Landroid/graphics/Paint$Style;
            astore 21 /* previousStyle */
        start local 21 // android.graphics.Paint$Style previousStyle
        21: .line 911
            aload 1 /* wp */
            aload 1 /* wp */
            getfield android.text.TextPaint.bgColor:I
            invokevirtual android.text.TextPaint.setColor:(I)V
        22: .line 912
            aload 1 /* wp */
            getstatic android.graphics.Paint$Style.FILL:Landroid/graphics/Paint$Style;
            invokevirtual android.text.TextPaint.setStyle:(Landroid/graphics/Paint$Style;)V
        23: .line 913
            aload 7 /* c */
            fload 18 /* leftX */
            iload 9 /* top */
            i2f
            fload 19 /* rightX */
            iload 11 /* bottom */
            i2f
            aload 1 /* wp */
            invokevirtual android.graphics.Canvas.drawRect:(FFFFLandroid/graphics/Paint;)V
        24: .line 915
            aload 1 /* wp */
            aload 21 /* previousStyle */
            invokevirtual android.text.TextPaint.setStyle:(Landroid/graphics/Paint$Style;)V
        25: .line 916
            aload 1 /* wp */
            iload 20 /* previousColor */
            invokevirtual android.text.TextPaint.setColor:(I)V
        end local 21 // android.graphics.Paint$Style previousStyle
        end local 20 // int previousColor
        26: .line 919
      StackMap locals:
      StackMap stack:
            iload 17 /* numDecorations */
            ifeq 62
        27: .line 920
            iconst_0
            istore 20 /* i */
        start local 20 // int i
        28: goto 61
        29: .line 921
      StackMap locals: int
      StackMap stack:
            aload 15 /* decorations */
            iload 20 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.text.TextLine$DecorationInfo
            astore 21 /* info */
        start local 21 // android.text.TextLine$DecorationInfo info
        30: .line 923
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.start:I
            iload 2 /* start */
            invokestatic java.lang.Math.max:(II)I
            istore 22 /* decorationStart */
        start local 22 // int decorationStart
        31: .line 924
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.end:I
            iload 14 /* offset */
            invokestatic java.lang.Math.min:(II)I
            istore 23 /* decorationEnd */
        start local 23 // int decorationEnd
        32: .line 925
            aload 0 /* this */
        33: .line 926
            aload 1 /* wp */
            iload 2 /* start */
            iload 3 /* end */
            iload 4 /* contextStart */
            iload 5 /* contextEnd */
            iload 6 /* runIsRtl */
            iload 22 /* decorationStart */
        34: .line 925
            invokevirtual android.text.TextLine.getRunAdvance:(Landroid/text/TextPaint;IIIIZI)F
            fstore 24 /* decorationStartAdvance */
        start local 24 // float decorationStartAdvance
        35: .line 927
            aload 0 /* this */
        36: .line 928
            aload 1 /* wp */
            iload 2 /* start */
            iload 3 /* end */
            iload 4 /* contextStart */
            iload 5 /* contextEnd */
            iload 6 /* runIsRtl */
            iload 23 /* decorationEnd */
        37: .line 927
            invokevirtual android.text.TextLine.getRunAdvance:(Landroid/text/TextPaint;IIIIZI)F
            fstore 25 /* decorationEndAdvance */
        start local 25 // float decorationEndAdvance
        38: .line 930
            iload 6 /* runIsRtl */
            ifeq 42
        39: .line 931
            fload 19 /* rightX */
            fload 25 /* decorationEndAdvance */
            fsub
            fstore 26 /* decorationXLeft */
        start local 26 // float decorationXLeft
        40: .line 932
            fload 19 /* rightX */
            fload 24 /* decorationStartAdvance */
            fsub
            fstore 27 /* decorationXRight */
        start local 27 // float decorationXRight
        41: .line 933
            goto 44
        end local 27 // float decorationXRight
        end local 26 // float decorationXLeft
        42: .line 934
      StackMap locals: android.text.TextLine android.text.TextPaint int int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int java.util.ArrayList float int float float int android.text.TextLine$DecorationInfo int int float float
      StackMap stack:
            fload 18 /* leftX */
            fload 24 /* decorationStartAdvance */
            fadd
            fstore 26 /* decorationXLeft */
        start local 26 // float decorationXLeft
        43: .line 935
            fload 18 /* leftX */
            fload 25 /* decorationEndAdvance */
            fadd
            fstore 27 /* decorationXRight */
        start local 27 // float decorationXRight
        44: .line 941
      StackMap locals: float float
      StackMap stack:
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.underlineColor:I
            ifeq 48
        45: .line 942
            aload 1 /* wp */
            aload 7 /* c */
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.underlineColor:I
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getUnderlinePosition:()F
        46: .line 943
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.underlineThickness:F
            fload 26 /* decorationXLeft */
            fload 27 /* decorationXRight */
            iload 10 /* y */
            i2f
        47: .line 942
            invokestatic android.text.TextLine.drawStroke:(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
        48: .line 945
      StackMap locals:
      StackMap stack:
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.isUnderlineText:Z
            ifeq 54
        49: .line 947
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getUnderlineThickness:()F
            fconst_1
            invokestatic java.lang.Math.max:(FF)F
        50: .line 946
            fstore 28 /* thickness */
        start local 28 // float thickness
        51: .line 948
            aload 1 /* wp */
            aload 7 /* c */
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getColor:()I
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getUnderlinePosition:()F
            fload 28 /* thickness */
        52: .line 949
            fload 26 /* decorationXLeft */
            fload 27 /* decorationXRight */
            iload 10 /* y */
            i2f
        53: .line 948
            invokestatic android.text.TextLine.drawStroke:(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
        end local 28 // float thickness
        54: .line 952
      StackMap locals:
      StackMap stack:
            aload 21 /* info */
            getfield android.text.TextLine$DecorationInfo.isStrikeThruText:Z
            ifeq 60
        55: .line 954
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getStrikeThruThickness:()F
            fconst_1
            invokestatic java.lang.Math.max:(FF)F
        56: .line 953
            fstore 28 /* thickness */
        start local 28 // float thickness
        57: .line 955
            aload 1 /* wp */
            aload 7 /* c */
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getColor:()I
            aload 1 /* wp */
            invokevirtual android.text.TextPaint.getStrikeThruPosition:()F
            fload 28 /* thickness */
        58: .line 956
            fload 26 /* decorationXLeft */
            fload 27 /* decorationXRight */
            iload 10 /* y */
            i2f
        59: .line 955
            invokestatic android.text.TextLine.drawStroke:(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
        end local 28 // float thickness
        end local 27 // float decorationXRight
        end local 26 // float decorationXLeft
        end local 25 // float decorationEndAdvance
        end local 24 // float decorationStartAdvance
        end local 23 // int decorationEnd
        end local 22 // int decorationStart
        end local 21 // android.text.TextLine$DecorationInfo info
        60: .line 920
      StackMap locals: android.text.TextLine android.text.TextPaint int int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int java.util.ArrayList float int float float int
      StackMap stack:
            iinc 20 /* i */ 1
      StackMap locals:
      StackMap stack:
        61: iload 20 /* i */
            iload 17 /* numDecorations */
            if_icmplt 29
        end local 20 // int i
        62: .line 961
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* c */
            aload 1 /* wp */
            iload 2 /* start */
            iload 3 /* end */
            iload 4 /* contextStart */
            iload 5 /* contextEnd */
            iload 6 /* runIsRtl */
        63: .line 962
            fload 18 /* leftX */
            iload 10 /* y */
            aload 1 /* wp */
            getfield android.text.TextPaint.baselineShift:I
            iadd
        64: .line 961
            invokevirtual android.text.TextLine.drawTextRun:(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V
        end local 19 // float rightX
        end local 18 // float leftX
        65: .line 965
      StackMap locals:
      StackMap stack:
            iload 6 /* runIsRtl */
            ifeq 66
            fload 16 /* totalWidth */
            fneg
            goto 67
      StackMap locals:
      StackMap stack:
        66: fload 16 /* totalWidth */
      StackMap locals:
      StackMap stack: float
        67: freturn
        end local 17 // int numDecorations
        end local 16 // float totalWidth
        end local 15 // java.util.ArrayList decorations
        end local 14 // int offset
        end local 13 // boolean needWidth
        end local 12 // android.graphics.Paint$FontMetricsInt fmi
        end local 11 // int bottom
        end local 10 // int y
        end local 9 // int top
        end local 8 // float x
        end local 7 // android.graphics.Canvas c
        end local 6 // boolean runIsRtl
        end local 5 // int contextEnd
        end local 4 // int contextStart
        end local 3 // int end
        end local 2 // int start
        end local 1 // android.text.TextPaint wp
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   68     0                    this  Landroid/text/TextLine;
            0   68     1                      wp  Landroid/text/TextPaint;
            0   68     2                   start  I
            0   68     3                     end  I
            0   68     4            contextStart  I
            0   68     5              contextEnd  I
            0   68     6                runIsRtl  Z
            0   68     7                       c  Landroid/graphics/Canvas;
            0   68     8                       x  F
            0   68     9                     top  I
            0   68    10                       y  I
            0   68    11                  bottom  I
            0   68    12                     fmi  Landroid/graphics/Paint$FontMetricsInt;
            0   68    13               needWidth  Z
            0   68    14                  offset  I
            0   68    15             decorations  Ljava/util/ArrayList<Landroid/text/TextLine$DecorationInfo;>;
            6   68    16              totalWidth  F
            9   68    17          numDecorations  I
           14   16    18                   leftX  F
           17   65    18                   leftX  F
           15   16    19                  rightX  F
           18   65    19                  rightX  F
           20   26    20           previousColor  I
           21   26    21           previousStyle  Landroid/graphics/Paint$Style;
           28   62    20                       i  I
           30   60    21                    info  Landroid/text/TextLine$DecorationInfo;
           31   60    22         decorationStart  I
           32   60    23           decorationEnd  I
           35   60    24  decorationStartAdvance  F
           38   60    25    decorationEndAdvance  F
           40   42    26         decorationXLeft  F
           43   60    26         decorationXLeft  F
           41   42    27        decorationXRight  F
           44   60    27        decorationXRight  F
           51   54    28               thickness  F
           57   60    28               thickness  F
    Signature: (Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList<Landroid/text/TextLine$DecorationInfo;>;)F
    MethodParameters:
              Name  Flags
      wp            
      start         
      end           
      contextStart  
      contextEnd    
      runIsRtl      
      c             
      x             
      top           
      y             
      bottom        
      fmi           
      needWidth     
      offset        
      decorations   

  private float handleReplacement(android.text.style.ReplacementSpan, android.text.TextPaint, int, int, boolean, android.graphics.Canvas, float, int, int, int, android.graphics.Paint$FontMetricsInt, boolean);
    descriptor: (Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=22, args_size=13
        start local 0 // android.text.TextLine this
        start local 1 // android.text.style.ReplacementSpan replacement
        start local 2 // android.text.TextPaint wp
        start local 3 // int start
        start local 4 // int limit
        start local 5 // boolean runIsRtl
        start local 6 // android.graphics.Canvas c
        start local 7 // float x
        start local 8 // int top
        start local 9 // int y
        start local 10 // int bottom
        start local 11 // android.graphics.Paint$FontMetricsInt fmi
        start local 12 // boolean needWidth
         0: .line 992
            fconst_0
            fstore 13 /* ret */
        start local 13 // float ret
         1: .line 994
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 3 /* start */
            iadd
            istore 14 /* textStart */
        start local 14 // int textStart
         2: .line 995
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 4 /* limit */
            iadd
            istore 15 /* textLimit */
        start local 15 // int textLimit
         3: .line 997
            iload 12 /* needWidth */
            ifne 4
            aload 6 /* c */
            ifnull 23
            iload 5 /* runIsRtl */
            ifeq 23
         4: .line 998
      StackMap locals: float int int
      StackMap stack:
            iconst_0
            istore 16 /* previousTop */
        start local 16 // int previousTop
         5: .line 999
            iconst_0
            istore 17 /* previousAscent */
        start local 17 // int previousAscent
         6: .line 1000
            iconst_0
            istore 18 /* previousDescent */
        start local 18 // int previousDescent
         7: .line 1001
            iconst_0
            istore 19 /* previousBottom */
        start local 19 // int previousBottom
         8: .line 1002
            iconst_0
            istore 20 /* previousLeading */
        start local 20 // int previousLeading
         9: .line 1004
            aload 11 /* fmi */
            ifnull 10
            iconst_1
            goto 11
      StackMap locals: android.text.TextLine android.text.style.ReplacementSpan android.text.TextPaint int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int float int int int int int int int
      StackMap stack:
        10: iconst_0
      StackMap locals:
      StackMap stack: int
        11: istore 21 /* needUpdateMetrics */
        start local 21 // boolean needUpdateMetrics
        12: .line 1006
            iload 21 /* needUpdateMetrics */
            ifeq 18
        13: .line 1007
            aload 11 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.top:I
            istore 16 /* previousTop */
        14: .line 1008
            aload 11 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.ascent:I
            istore 17 /* previousAscent */
        15: .line 1009
            aload 11 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.descent:I
            istore 18 /* previousDescent */
        16: .line 1010
            aload 11 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.bottom:I
            istore 19 /* previousBottom */
        17: .line 1011
            aload 11 /* fmi */
            getfield android.graphics.Paint$FontMetricsInt.leading:I
            istore 20 /* previousLeading */
        18: .line 1014
      StackMap locals: int
      StackMap stack:
            aload 1 /* replacement */
            aload 2 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 14 /* textStart */
            iload 15 /* textLimit */
            aload 11 /* fmi */
            invokevirtual android.text.style.ReplacementSpan.getSize:(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I
            i2f
            fstore 13 /* ret */
        19: .line 1016
            iload 21 /* needUpdateMetrics */
            ifeq 23
        20: .line 1017
            aload 11 /* fmi */
            iload 16 /* previousTop */
            iload 17 /* previousAscent */
            iload 18 /* previousDescent */
            iload 19 /* previousBottom */
        21: .line 1018
            iload 20 /* previousLeading */
        22: .line 1017
            invokestatic android.text.TextLine.updateMetrics:(Landroid/graphics/Paint$FontMetricsInt;IIIII)V
        end local 21 // boolean needUpdateMetrics
        end local 20 // int previousLeading
        end local 19 // int previousBottom
        end local 18 // int previousDescent
        end local 17 // int previousAscent
        end local 16 // int previousTop
        23: .line 1022
      StackMap locals: android.text.TextLine android.text.style.ReplacementSpan android.text.TextPaint int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int float int int
      StackMap stack:
            aload 6 /* c */
            ifnull 29
        24: .line 1023
            iload 5 /* runIsRtl */
            ifeq 26
        25: .line 1024
            fload 7 /* x */
            fload 13 /* ret */
            fsub
            fstore 7 /* x */
        26: .line 1026
      StackMap locals:
      StackMap stack:
            aload 1 /* replacement */
            aload 6 /* c */
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 14 /* textStart */
            iload 15 /* textLimit */
        27: .line 1027
            fload 7 /* x */
            iload 8 /* top */
            iload 9 /* y */
            iload 10 /* bottom */
            aload 2 /* wp */
        28: .line 1026
            invokevirtual android.text.style.ReplacementSpan.draw:(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V
        29: .line 1030
      StackMap locals:
      StackMap stack:
            iload 5 /* runIsRtl */
            ifeq 30
            fload 13 /* ret */
            fneg
            goto 31
      StackMap locals:
      StackMap stack:
        30: fload 13 /* ret */
      StackMap locals:
      StackMap stack: float
        31: freturn
        end local 15 // int textLimit
        end local 14 // int textStart
        end local 13 // float ret
        end local 12 // boolean needWidth
        end local 11 // android.graphics.Paint$FontMetricsInt fmi
        end local 10 // int bottom
        end local 9 // int y
        end local 8 // int top
        end local 7 // float x
        end local 6 // android.graphics.Canvas c
        end local 5 // boolean runIsRtl
        end local 4 // int limit
        end local 3 // int start
        end local 2 // android.text.TextPaint wp
        end local 1 // android.text.style.ReplacementSpan replacement
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   32     0               this  Landroid/text/TextLine;
            0   32     1        replacement  Landroid/text/style/ReplacementSpan;
            0   32     2                 wp  Landroid/text/TextPaint;
            0   32     3              start  I
            0   32     4              limit  I
            0   32     5           runIsRtl  Z
            0   32     6                  c  Landroid/graphics/Canvas;
            0   32     7                  x  F
            0   32     8                top  I
            0   32     9                  y  I
            0   32    10             bottom  I
            0   32    11                fmi  Landroid/graphics/Paint$FontMetricsInt;
            0   32    12          needWidth  Z
            1   32    13                ret  F
            2   32    14          textStart  I
            3   32    15          textLimit  I
            5   23    16        previousTop  I
            6   23    17     previousAscent  I
            7   23    18    previousDescent  I
            8   23    19     previousBottom  I
            9   23    20    previousLeading  I
           12   23    21  needUpdateMetrics  Z
    MethodParameters:
             Name  Flags
      replacement  
      wp           
      start        
      limit        
      runIsRtl     
      c            
      x            
      top          
      y            
      bottom       
      fmi          
      needWidth    

  private int adjustHyphenEdit(int, int, int);
    descriptor: (III)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=4
        start local 0 // android.text.TextLine this
        start local 1 // int start
        start local 2 // int limit
        start local 3 // int hyphenEdit
         0: .line 1034
            iload 3 /* hyphenEdit */
            istore 4 /* result */
        start local 4 // int result
         1: .line 1036
            iload 1 /* start */
            ifle 3
         2: .line 1037
            iload 4 /* result */
            bipush -25
            iand
            istore 4 /* result */
         3: .line 1039
      StackMap locals: int
      StackMap stack:
            iload 2 /* limit */
            aload 0 /* this */
            getfield android.text.TextLine.mLen:I
            if_icmpge 5
         4: .line 1040
            iload 4 /* result */
            bipush -8
            iand
            istore 4 /* result */
         5: .line 1042
      StackMap locals:
      StackMap stack:
            iload 4 /* result */
            ireturn
        end local 4 // int result
        end local 3 // int hyphenEdit
        end local 2 // int limit
        end local 1 // int start
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Landroid/text/TextLine;
            0    6     1       start  I
            0    6     2       limit  I
            0    6     3  hyphenEdit  I
            1    6     4      result  I
    MethodParameters:
            Name  Flags
      start       
      limit       
      hyphenEdit  

  private void extractDecorationInfo(android.text.TextPaint, android.text.TextLine$DecorationInfo);
    descriptor: (Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.text.TextLine this
        start local 1 // android.text.TextPaint paint
        start local 2 // android.text.TextLine$DecorationInfo info
         0: .line 1069
            aload 2 /* info */
            aload 1 /* paint */
            invokevirtual android.text.TextPaint.isStrikeThruText:()Z
            putfield android.text.TextLine$DecorationInfo.isStrikeThruText:Z
         1: .line 1070
            aload 2 /* info */
            getfield android.text.TextLine$DecorationInfo.isStrikeThruText:Z
            ifeq 3
         2: .line 1071
            aload 1 /* paint */
            iconst_0
            invokevirtual android.text.TextPaint.setStrikeThruText:(Z)V
         3: .line 1073
      StackMap locals:
      StackMap stack:
            aload 2 /* info */
            aload 1 /* paint */
            invokevirtual android.text.TextPaint.isUnderlineText:()Z
            putfield android.text.TextLine$DecorationInfo.isUnderlineText:Z
         4: .line 1074
            aload 2 /* info */
            getfield android.text.TextLine$DecorationInfo.isUnderlineText:Z
            ifeq 6
         5: .line 1075
            aload 1 /* paint */
            iconst_0
            invokevirtual android.text.TextPaint.setUnderlineText:(Z)V
         6: .line 1077
      StackMap locals:
      StackMap stack:
            aload 2 /* info */
            aload 1 /* paint */
            getfield android.text.TextPaint.underlineColor:I
            putfield android.text.TextLine$DecorationInfo.underlineColor:I
         7: .line 1078
            aload 2 /* info */
            aload 1 /* paint */
            getfield android.text.TextPaint.underlineThickness:F
            putfield android.text.TextLine$DecorationInfo.underlineThickness:F
         8: .line 1079
            aload 1 /* paint */
            iconst_0
            fconst_0
            invokevirtual android.text.TextPaint.setUnderlineText:(IF)V
         9: .line 1080
            return
        end local 2 // android.text.TextLine$DecorationInfo info
        end local 1 // android.text.TextPaint paint
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Landroid/text/TextLine;
            0   10     1  paint  Landroid/text/TextPaint;
            0   10     2   info  Landroid/text/TextLine$DecorationInfo;
    MethodParameters:
       Name  Flags
      paint  
      info   

  private float handleRun(int, int, int, boolean, android.graphics.Canvas, float, int, int, int, android.graphics.Paint$FontMetricsInt, boolean);
    descriptor: (IIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=17, locals=28, args_size=12
        start local 0 // android.text.TextLine this
        start local 1 // int start
        start local 2 // int measureLimit
        start local 3 // int limit
        start local 4 // boolean runIsRtl
        start local 5 // android.graphics.Canvas c
        start local 6 // float x
        start local 7 // int top
        start local 8 // int y
        start local 9 // int bottom
        start local 10 // android.graphics.Paint$FontMetricsInt fmi
        start local 11 // boolean needWidth
         0: .line 1105
            iload 2 /* measureLimit */
            iload 1 /* start */
            if_icmplt 1
            iload 2 /* measureLimit */
            iload 3 /* limit */
            if_icmple 4
         1: .line 1106
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            new java.lang.StringBuilder
            dup
            ldc "measureLimit ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* measureLimit */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") is out of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         2: .line 1107
            ldc "start ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* start */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") and limit ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* limit */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") bounds"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 1106
            invokespecial java.lang.IndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1111
      StackMap locals:
      StackMap stack:
            iload 1 /* start */
            iload 2 /* measureLimit */
            if_icmpne 10
         5: .line 1112
            aload 0 /* this */
            getfield android.text.TextLine.mWorkPaint:Landroid/text/TextPaint;
            astore 12 /* wp */
        start local 12 // android.text.TextPaint wp
         6: .line 1113
            aload 12 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
         7: .line 1114
            aload 10 /* fmi */
            ifnull 9
         8: .line 1115
            aload 10 /* fmi */
            aload 12 /* wp */
            invokestatic android.text.TextLine.expandMetricsFromPaint:(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V
         9: .line 1117
      StackMap locals: android.text.TextPaint
      StackMap stack:
            fconst_0
            freturn
        end local 12 // android.text.TextPaint wp
        10: .line 1121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            ifnonnull 13
        11: .line 1122
            iconst_0
            istore 12 /* needsSpanMeasurement */
        start local 12 // boolean needsSpanMeasurement
        12: .line 1123
            goto 20
        end local 12 // boolean needsSpanMeasurement
        13: .line 1124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 1 /* start */
            iadd
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 3 /* limit */
            iadd
            invokevirtual android.text.SpanSet.init:(Landroid/text/Spanned;II)V
        14: .line 1125
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            aload 0 /* this */
            getfield android.text.TextLine.mSpanned:Landroid/text/Spanned;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 1 /* start */
            iadd
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 3 /* limit */
            iadd
            invokevirtual android.text.SpanSet.init:(Landroid/text/Spanned;II)V
        15: .line 1126
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.numberOfSpans:I
            ifne 18
        16: .line 1127
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.numberOfSpans:I
            ifne 18
        17: .line 1126
            iconst_0
            goto 19
      StackMap locals:
      StackMap stack:
        18: iconst_1
      StackMap locals:
      StackMap stack: int
        19: istore 12 /* needsSpanMeasurement */
        start local 12 // boolean needsSpanMeasurement
        20: .line 1130
      StackMap locals: int
      StackMap stack:
            iload 12 /* needsSpanMeasurement */
            ifne 27
        21: .line 1131
            aload 0 /* this */
            getfield android.text.TextLine.mWorkPaint:Landroid/text/TextPaint;
            astore 13 /* wp */
        start local 13 // android.text.TextPaint wp
        22: .line 1132
            aload 13 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
        23: .line 1133
            aload 13 /* wp */
            aload 0 /* this */
            iload 1 /* start */
            iload 3 /* limit */
            aload 13 /* wp */
            invokevirtual android.text.TextPaint.getHyphenEdit:()I
            invokevirtual android.text.TextLine.adjustHyphenEdit:(III)I
            invokevirtual android.text.TextPaint.setHyphenEdit:(I)V
        24: .line 1134
            aload 0 /* this */
            aload 13 /* wp */
            iload 1 /* start */
            iload 3 /* limit */
            iload 1 /* start */
            iload 3 /* limit */
            iload 4 /* runIsRtl */
            aload 5 /* c */
            fload 6 /* x */
            iload 7 /* top */
        25: .line 1135
            iload 8 /* y */
            iload 9 /* bottom */
            aload 10 /* fmi */
            iload 11 /* needWidth */
            iload 2 /* measureLimit */
            aconst_null
        26: .line 1134
            invokevirtual android.text.TextLine.handleText:(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;)F
            freturn
        end local 13 // android.text.TextPaint wp
        27: .line 1143
      StackMap locals:
      StackMap stack:
            fload 6 /* x */
            fstore 13 /* originalX */
        start local 13 // float originalX
        28: .line 1144
            iload 1 /* start */
            istore 14 /* i */
        start local 14 // int i
        29: goto 108
        30: .line 1145
      StackMap locals: float int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mWorkPaint:Landroid/text/TextPaint;
            astore 16 /* wp */
        start local 16 // android.text.TextPaint wp
        31: .line 1146
            aload 16 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
        32: .line 1148
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 14 /* i */
            iadd
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 3 /* limit */
            iadd
            invokevirtual android.text.SpanSet.getNextTransition:(II)I
        33: .line 1149
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
        34: .line 1148
            isub
            istore 15 /* inext */
        start local 15 // int inext
        35: .line 1150
            iload 15 /* inext */
            iload 2 /* measureLimit */
            invokestatic java.lang.Math.min:(II)I
            istore 17 /* mlimit */
        start local 17 // int mlimit
        36: .line 1152
            aconst_null
            astore 18 /* replacement */
        start local 18 // android.text.style.ReplacementSpan replacement
        37: .line 1154
            iconst_0
            istore 19 /* j */
        start local 19 // int j
        38: goto 47
        39: .line 1157
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.spanStarts:[I
            iload 19 /* j */
            iaload
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 17 /* mlimit */
            iadd
            if_icmpge 46
        40: .line 1158
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.spanEnds:[I
            iload 19 /* j */
            iaload
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 14 /* i */
            iadd
            if_icmpgt 41
            goto 46
        41: .line 1159
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.spans:[Ljava/lang/Object;
            checkcast android.text.style.MetricAffectingSpan[]
            iload 19 /* j */
            aaload
            astore 20 /* span */
        start local 20 // android.text.style.MetricAffectingSpan span
        42: .line 1160
            aload 20 /* span */
            instanceof android.text.style.ReplacementSpan
            ifeq 45
        43: .line 1161
            aload 20 /* span */
            checkcast android.text.style.ReplacementSpan
            astore 18 /* replacement */
        44: .line 1162
            goto 46
        45: .line 1165
      StackMap locals: android.text.style.MetricAffectingSpan
      StackMap stack:
            aload 20 /* span */
            aload 16 /* wp */
            invokevirtual android.text.style.MetricAffectingSpan.updateDrawState:(Landroid/text/TextPaint;)V
        end local 20 // android.text.style.MetricAffectingSpan span
        46: .line 1154
      StackMap locals:
      StackMap stack:
            iinc 19 /* j */ 1
      StackMap locals:
      StackMap stack:
        47: iload 19 /* j */
            aload 0 /* this */
            getfield android.text.TextLine.mMetricAffectingSpanSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.numberOfSpans:I
            if_icmplt 39
        end local 19 // int j
        48: .line 1169
            aload 18 /* replacement */
            ifnull 54
        49: .line 1170
            fload 6 /* x */
            aload 0 /* this */
            aload 18 /* replacement */
            aload 16 /* wp */
            iload 14 /* i */
            iload 17 /* mlimit */
            iload 4 /* runIsRtl */
            aload 5 /* c */
            fload 6 /* x */
            iload 7 /* top */
            iload 8 /* y */
        50: .line 1171
            iload 9 /* bottom */
            aload 10 /* fmi */
            iload 11 /* needWidth */
            ifne 51
            iload 17 /* mlimit */
            iload 2 /* measureLimit */
            if_icmplt 51
            iconst_0
            goto 52
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan
      StackMap stack: float android.text.TextLine android.text.style.ReplacementSpan android.text.TextPaint int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt
        51: iconst_1
        52: .line 1170
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan
      StackMap stack: float android.text.TextLine android.text.style.ReplacementSpan android.text.TextPaint int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int
            invokevirtual android.text.TextLine.handleReplacement:(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
            fadd
            fstore 6 /* x */
        53: .line 1172
            goto 107
        54: .line 1175
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mActivePaint:Landroid/text/TextPaint;
            astore 19 /* activePaint */
        start local 19 // android.text.TextPaint activePaint
        55: .line 1176
            aload 19 /* activePaint */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
        56: .line 1177
            iload 14 /* i */
            istore 20 /* activeStart */
        start local 20 // int activeStart
        57: .line 1178
            iload 17 /* mlimit */
            istore 21 /* activeEnd */
        start local 21 // int activeEnd
        58: .line 1179
            aload 0 /* this */
            getfield android.text.TextLine.mDecorationInfo:Landroid/text/TextLine$DecorationInfo;
            astore 22 /* decorationInfo */
        start local 22 // android.text.TextLine$DecorationInfo decorationInfo
        59: .line 1180
            aload 0 /* this */
            getfield android.text.TextLine.mDecorations:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.clear:()V
        60: .line 1181
            iload 14 /* i */
            istore 23 /* j */
        start local 23 // int j
        61: goto 98
        62: .line 1182
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan android.text.TextPaint int int android.text.TextLine$DecorationInfo int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 23 /* j */
            iadd
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 15 /* inext */
            iadd
            invokevirtual android.text.SpanSet.getNextTransition:(II)I
        63: .line 1183
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
        64: .line 1182
            isub
            istore 24 /* jnext */
        start local 24 // int jnext
        65: .line 1185
            iload 24 /* jnext */
            iload 17 /* mlimit */
            invokestatic java.lang.Math.min:(II)I
            istore 25 /* offset */
        start local 25 // int offset
        66: .line 1186
            aload 16 /* wp */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
        67: .line 1187
            iconst_0
            istore 26 /* k */
        start local 26 // int k
        68: goto 74
        69: .line 1189
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.spanStarts:[I
            iload 26 /* k */
            iaload
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 25 /* offset */
            iadd
            if_icmpge 73
        70: .line 1190
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.spanEnds:[I
            iload 26 /* k */
            iaload
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iload 23 /* j */
            iadd
            if_icmpgt 71
            goto 73
        71: .line 1192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.spans:[Ljava/lang/Object;
            checkcast android.text.style.CharacterStyle[]
            iload 26 /* k */
            aaload
            astore 27 /* span */
        start local 27 // android.text.style.CharacterStyle span
        72: .line 1193
            aload 27 /* span */
            aload 16 /* wp */
            invokevirtual android.text.style.CharacterStyle.updateDrawState:(Landroid/text/TextPaint;)V
        end local 27 // android.text.style.CharacterStyle span
        73: .line 1187
      StackMap locals:
      StackMap stack:
            iinc 26 /* k */ 1
      StackMap locals:
      StackMap stack:
        74: iload 26 /* k */
            aload 0 /* this */
            getfield android.text.TextLine.mCharacterStyleSpanSet:Landroid/text/SpanSet;
            getfield android.text.SpanSet.numberOfSpans:I
            if_icmplt 69
        end local 26 // int k
        75: .line 1196
            aload 0 /* this */
            aload 16 /* wp */
            aload 22 /* decorationInfo */
            invokevirtual android.text.TextLine.extractDecorationInfo:(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V
        76: .line 1198
            iload 23 /* j */
            iload 14 /* i */
            if_icmpne 79
        77: .line 1202
            aload 19 /* activePaint */
            aload 16 /* wp */
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
        78: .line 1203
            goto 91
      StackMap locals:
      StackMap stack:
        79: aload 16 /* wp */
            aload 19 /* activePaint */
            invokevirtual android.text.TextPaint.hasEqualAttributes:(Landroid/text/TextPaint;)Z
            ifne 91
        80: .line 1207
            aload 19 /* activePaint */
            aload 0 /* this */
        81: .line 1208
            iload 20 /* activeStart */
            iload 21 /* activeEnd */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.getHyphenEdit:()I
        82: .line 1207
            invokevirtual android.text.TextLine.adjustHyphenEdit:(III)I
            invokevirtual android.text.TextPaint.setHyphenEdit:(I)V
        83: .line 1209
            fload 6 /* x */
            aload 0 /* this */
            aload 19 /* activePaint */
            iload 20 /* activeStart */
            iload 21 /* activeEnd */
            iload 14 /* i */
            iload 15 /* inext */
            iload 4 /* runIsRtl */
            aload 5 /* c */
            fload 6 /* x */
        84: .line 1210
            iload 7 /* top */
            iload 8 /* y */
            iload 9 /* bottom */
            aload 10 /* fmi */
            iload 11 /* needWidth */
            ifne 85
            iload 21 /* activeEnd */
            iload 2 /* measureLimit */
            if_icmplt 85
            iconst_0
            goto 86
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan android.text.TextPaint int int android.text.TextLine$DecorationInfo int int int
      StackMap stack: float android.text.TextLine android.text.TextPaint int int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt
        85: iconst_1
        86: .line 1211
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan android.text.TextPaint int int android.text.TextLine$DecorationInfo int int int
      StackMap stack: float android.text.TextLine android.text.TextPaint int int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int
            iload 21 /* activeEnd */
            iload 17 /* mlimit */
            invokestatic java.lang.Math.min:(II)I
            aload 0 /* this */
            getfield android.text.TextLine.mDecorations:Ljava/util/ArrayList;
        87: .line 1209
            invokevirtual android.text.TextLine.handleText:(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;)F
            fadd
            fstore 6 /* x */
        88: .line 1213
            iload 23 /* j */
            istore 20 /* activeStart */
        89: .line 1214
            aload 19 /* activePaint */
            aload 16 /* wp */
            invokevirtual android.text.TextPaint.set:(Landroid/text/TextPaint;)V
        90: .line 1215
            aload 0 /* this */
            getfield android.text.TextLine.mDecorations:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.clear:()V
        91: .line 1223
      StackMap locals:
      StackMap stack:
            iload 24 /* jnext */
            istore 21 /* activeEnd */
        92: .line 1224
            aload 22 /* decorationInfo */
            invokevirtual android.text.TextLine$DecorationInfo.hasDecoration:()Z
            ifeq 97
        93: .line 1225
            aload 22 /* decorationInfo */
            invokevirtual android.text.TextLine$DecorationInfo.copyInfo:()Landroid/text/TextLine$DecorationInfo;
            astore 26 /* copy */
        start local 26 // android.text.TextLine$DecorationInfo copy
        94: .line 1226
            aload 26 /* copy */
            iload 23 /* j */
            putfield android.text.TextLine$DecorationInfo.start:I
        95: .line 1227
            aload 26 /* copy */
            iload 24 /* jnext */
            putfield android.text.TextLine$DecorationInfo.end:I
        96: .line 1228
            aload 0 /* this */
            getfield android.text.TextLine.mDecorations:Ljava/util/ArrayList;
            aload 26 /* copy */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 26 // android.text.TextLine$DecorationInfo copy
        end local 25 // int offset
        97: .line 1181
      StackMap locals:
      StackMap stack:
            iload 24 /* jnext */
            istore 23 /* j */
        end local 24 // int jnext
      StackMap locals:
      StackMap stack:
        98: iload 23 /* j */
            iload 17 /* mlimit */
            if_icmplt 62
        end local 23 // int j
        99: .line 1232
            aload 19 /* activePaint */
            aload 0 /* this */
       100: .line 1233
            iload 20 /* activeStart */
            iload 21 /* activeEnd */
            aload 0 /* this */
            getfield android.text.TextLine.mPaint:Landroid/text/TextPaint;
            invokevirtual android.text.TextPaint.getHyphenEdit:()I
       101: .line 1232
            invokevirtual android.text.TextLine.adjustHyphenEdit:(III)I
            invokevirtual android.text.TextPaint.setHyphenEdit:(I)V
       102: .line 1234
            fload 6 /* x */
            aload 0 /* this */
            aload 19 /* activePaint */
            iload 20 /* activeStart */
            iload 21 /* activeEnd */
            iload 14 /* i */
            iload 15 /* inext */
            iload 4 /* runIsRtl */
            aload 5 /* c */
            fload 6 /* x */
       103: .line 1235
            iload 7 /* top */
            iload 8 /* y */
            iload 9 /* bottom */
            aload 10 /* fmi */
            iload 11 /* needWidth */
            ifne 104
            iload 21 /* activeEnd */
            iload 2 /* measureLimit */
            if_icmplt 104
            iconst_0
            goto 105
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan android.text.TextPaint int int android.text.TextLine$DecorationInfo
      StackMap stack: float android.text.TextLine android.text.TextPaint int int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt
       104: iconst_1
       105: .line 1236
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int android.text.TextPaint int android.text.style.ReplacementSpan android.text.TextPaint int int android.text.TextLine$DecorationInfo
      StackMap stack: float android.text.TextLine android.text.TextPaint int int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int
            iload 21 /* activeEnd */
            iload 17 /* mlimit */
            invokestatic java.lang.Math.min:(II)I
            aload 0 /* this */
            getfield android.text.TextLine.mDecorations:Ljava/util/ArrayList;
       106: .line 1234
            invokevirtual android.text.TextLine.handleText:(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;)F
            fadd
            fstore 6 /* x */
        end local 22 // android.text.TextLine$DecorationInfo decorationInfo
        end local 21 // int activeEnd
        end local 20 // int activeStart
        end local 19 // android.text.TextPaint activePaint
        end local 18 // android.text.style.ReplacementSpan replacement
        end local 17 // int mlimit
        end local 16 // android.text.TextPaint wp
       107: .line 1144
      StackMap locals: android.text.TextLine int int int int android.graphics.Canvas float int int int android.graphics.Paint$FontMetricsInt int int float int int
      StackMap stack:
            iload 15 /* inext */
            istore 14 /* i */
        end local 15 // int inext
      StackMap locals:
      StackMap stack:
       108: iload 14 /* i */
            iload 2 /* measureLimit */
            if_icmplt 30
        end local 14 // int i
       109: .line 1239
            fload 6 /* x */
            fload 13 /* originalX */
            fsub
            freturn
        end local 13 // float originalX
        end local 12 // boolean needsSpanMeasurement
        end local 11 // boolean needWidth
        end local 10 // android.graphics.Paint$FontMetricsInt fmi
        end local 9 // int bottom
        end local 8 // int y
        end local 7 // int top
        end local 6 // float x
        end local 5 // android.graphics.Canvas c
        end local 4 // boolean runIsRtl
        end local 3 // int limit
        end local 2 // int measureLimit
        end local 1 // int start
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0  110     0                  this  Landroid/text/TextLine;
            0  110     1                 start  I
            0  110     2          measureLimit  I
            0  110     3                 limit  I
            0  110     4              runIsRtl  Z
            0  110     5                     c  Landroid/graphics/Canvas;
            0  110     6                     x  F
            0  110     7                   top  I
            0  110     8                     y  I
            0  110     9                bottom  I
            0  110    10                   fmi  Landroid/graphics/Paint$FontMetricsInt;
            0  110    11             needWidth  Z
            6   10    12                    wp  Landroid/text/TextPaint;
           12   13    12  needsSpanMeasurement  Z
           20  110    12  needsSpanMeasurement  Z
           22   27    13                    wp  Landroid/text/TextPaint;
           28  110    13             originalX  F
           29  109    14                     i  I
           35  108    15                 inext  I
           31  107    16                    wp  Landroid/text/TextPaint;
           36  107    17                mlimit  I
           37  107    18           replacement  Landroid/text/style/ReplacementSpan;
           38   48    19                     j  I
           42   46    20                  span  Landroid/text/style/MetricAffectingSpan;
           55  107    19           activePaint  Landroid/text/TextPaint;
           57  107    20           activeStart  I
           58  107    21             activeEnd  I
           59  107    22        decorationInfo  Landroid/text/TextLine$DecorationInfo;
           61   99    23                     j  I
           65   98    24                 jnext  I
           66   97    25                offset  I
           68   75    26                     k  I
           72   73    27                  span  Landroid/text/style/CharacterStyle;
           94   97    26                  copy  Landroid/text/TextLine$DecorationInfo;
    MethodParameters:
              Name  Flags
      start         
      measureLimit  
      limit         
      runIsRtl      
      c             
      x             
      top           
      y             
      bottom        
      fmi           
      needWidth     

  private void drawTextRun(android.graphics.Canvas, android.text.TextPaint, int, int, int, int, boolean, float, int);
    descriptor: (Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=12, args_size=10
        start local 0 // android.text.TextLine this
        start local 1 // android.graphics.Canvas c
        start local 2 // android.text.TextPaint wp
        start local 3 // int start
        start local 4 // int end
        start local 5 // int contextStart
        start local 6 // int contextEnd
        start local 7 // boolean runIsRtl
        start local 8 // float x
        start local 9 // int y
         0: .line 1258
            aload 0 /* this */
            getfield android.text.TextLine.mCharsValid:Z
            ifeq 7
         1: .line 1259
            iload 4 /* end */
            iload 3 /* start */
            isub
            istore 10 /* count */
        start local 10 // int count
         2: .line 1260
            iload 6 /* contextEnd */
            iload 5 /* contextStart */
            isub
            istore 11 /* contextCount */
        start local 11 // int contextCount
         3: .line 1261
            aload 1 /* c */
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iload 3 /* start */
            iload 10 /* count */
            iload 5 /* contextStart */
            iload 11 /* contextCount */
         4: .line 1262
            fload 8 /* x */
            iload 9 /* y */
            i2f
            iload 7 /* runIsRtl */
            aload 2 /* wp */
         5: .line 1261
            invokevirtual android.graphics.Canvas.drawTextRun:([CIIIIFFZLandroid/graphics/Paint;)V
        end local 11 // int contextCount
        end local 10 // int count
         6: .line 1263
            goto 11
         7: .line 1264
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            istore 10 /* delta */
        start local 10 // int delta
         8: .line 1265
            aload 1 /* c */
            aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 10 /* delta */
            iload 3 /* start */
            iadd
            iload 10 /* delta */
            iload 4 /* end */
            iadd
         9: .line 1266
            iload 10 /* delta */
            iload 5 /* contextStart */
            iadd
            iload 10 /* delta */
            iload 6 /* contextEnd */
            iadd
            fload 8 /* x */
            iload 9 /* y */
            i2f
            iload 7 /* runIsRtl */
            aload 2 /* wp */
        10: .line 1265
            invokevirtual android.graphics.Canvas.drawTextRun:(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V
        end local 10 // int delta
        11: .line 1268
      StackMap locals:
      StackMap stack:
            return
        end local 9 // int y
        end local 8 // float x
        end local 7 // boolean runIsRtl
        end local 6 // int contextEnd
        end local 5 // int contextStart
        end local 4 // int end
        end local 3 // int start
        end local 2 // android.text.TextPaint wp
        end local 1 // android.graphics.Canvas c
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0          this  Landroid/text/TextLine;
            0   12     1             c  Landroid/graphics/Canvas;
            0   12     2            wp  Landroid/text/TextPaint;
            0   12     3         start  I
            0   12     4           end  I
            0   12     5  contextStart  I
            0   12     6    contextEnd  I
            0   12     7      runIsRtl  Z
            0   12     8             x  F
            0   12     9             y  I
            2    6    10         count  I
            3    6    11  contextCount  I
            8   11    10         delta  I
    MethodParameters:
              Name  Flags
      c             
      wp            
      start         
      end           
      contextStart  
      contextEnd    
      runIsRtl      
      x             
      y             

  float nextTab(float);
    descriptor: (F)F
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.text.TextLine this
        start local 1 // float h
         0: .line 1277
            aload 0 /* this */
            getfield android.text.TextLine.mTabs:Landroid/text/Layout$TabStops;
            ifnull 2
         1: .line 1278
            aload 0 /* this */
            getfield android.text.TextLine.mTabs:Landroid/text/Layout$TabStops;
            fload 1 /* h */
            invokevirtual android.text.Layout$TabStops.nextTab:(F)F
            freturn
         2: .line 1280
      StackMap locals:
      StackMap stack:
            fload 1 /* h */
            bipush 20
            invokestatic android.text.Layout$TabStops.nextDefaultStop:(FI)F
            freturn
        end local 1 // float h
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/text/TextLine;
            0    3     1     h  F
    MethodParameters:
      Name  Flags
      h     

  private boolean isStretchableWhitespace(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.text.TextLine this
        start local 1 // int ch
         0: .line 1285
            iload 1 /* ch */
            bipush 32
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // int ch
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/text/TextLine;
            0    2     1    ch  I
    MethodParameters:
      Name  Flags
      ch    

  private int countStretchableSpaces(int, int);
    descriptor: (II)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // android.text.TextLine this
        start local 1 // int start
        start local 2 // int end
         0: .line 1290
            iconst_0
            istore 3 /* count */
        start local 3 // int count
         1: .line 1291
            iload 1 /* start */
            istore 4 /* i */
        start local 4 // int i
         2: goto 9
         3: .line 1292
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield android.text.TextLine.mCharsValid:Z
            ifeq 4
            aload 0 /* this */
            getfield android.text.TextLine.mChars:[C
            iload 4 /* i */
            caload
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 0 /* this */
            getfield android.text.TextLine.mText:Ljava/lang/CharSequence;
            iload 4 /* i */
            aload 0 /* this */
            getfield android.text.TextLine.mStart:I
            iadd
            invokeinterface java.lang.CharSequence.charAt:(I)C
      StackMap locals:
      StackMap stack: int
         5: istore 5 /* c */
        start local 5 // char c
         6: .line 1293
            aload 0 /* this */
            iload 5 /* c */
            invokevirtual android.text.TextLine.isStretchableWhitespace:(I)Z
            ifeq 8
         7: .line 1294
            iinc 3 /* count */ 1
        end local 5 // char c
         8: .line 1291
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 4 /* i */
            iload 2 /* end */
            if_icmplt 3
        end local 4 // int i
        10: .line 1297
            iload 3 /* count */
            ireturn
        end local 3 // int count
        end local 2 // int end
        end local 1 // int start
        end local 0 // android.text.TextLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Landroid/text/TextLine;
            0   11     1  start  I
            0   11     2    end  I
            1   11     3  count  I
            2   10     4      i  I
            6    8     5      c  C
    MethodParameters:
       Name  Flags
      start  
      end    

  public static boolean isLineEndSpace(char);
    descriptor: (C)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // char ch
         0: .line 1302
            iload 0 /* ch */
            bipush 32
            if_icmpeq 4
            iload 0 /* ch */
            bipush 9
            if_icmpeq 4
            iload 0 /* ch */
            sipush 5760
            if_icmpeq 4
         1: .line 1303
            sipush 8192
            iload 0 /* ch */
            if_icmpgt 2
            iload 0 /* ch */
            sipush 8202
            if_icmpgt 2
            iload 0 /* ch */
            sipush 8199
            if_icmpne 4
         2: .line 1304
      StackMap locals:
      StackMap stack:
            iload 0 /* ch */
            sipush 8287
            if_icmpeq 4
            iload 0 /* ch */
            sipush 12288
            if_icmpeq 4
         3: .line 1302
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_1
            ireturn
        end local 0 // char ch
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    ch  C
    MethodParameters:
      Name  Flags
      ch    
}
SourceFile: "TextLine.java"
NestMembers:
  android.text.TextLine$DecorationInfo
InnerClasses:
  public FontMetricsInt = android.graphics.Paint$FontMetricsInt of android.graphics.Paint
  public final Style = android.graphics.Paint$Style of android.graphics.Paint
  public Directions = android.text.Layout$Directions of android.text.Layout
  TabStops = android.text.Layout$TabStops of android.text.Layout
  public final Params = android.text.PrecomputedText$Params of android.text.PrecomputedText
  private final DecorationInfo = android.text.TextLine$DecorationInfo of android.text.TextLine
  public final Visibility = com.android.internal.annotations.VisibleForTesting$Visibility of com.android.internal.annotations.VisibleForTesting
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting(visibility = com.android.internal.annotations.VisibleForTesting$Visibility.PACKAGE:Lcom/android/internal/annotations/VisibleForTesting$Visibility;)