public abstract class org.apache.fop.svg.NativeTextPainter extends org.apache.batik.bridge.StrokingTextPainter
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.fop.svg.NativeTextPainter
  super_class: org.apache.batik.bridge.StrokingTextPainter
{
  protected static final org.apache.commons.logging.Log log;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

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

  protected final org.apache.fop.fonts.FontInfo fontInfo;
    descriptor: Lorg/apache/fop/fonts/FontInfo;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.apache.batik.bridge.FontFamilyResolver fontFamilyResolver;
    descriptor: Lorg/apache/batik/bridge/FontFamilyResolver;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected org.apache.fop.fonts.Font font;
    descriptor: Lorg/apache/fop/fonts/Font;
    flags: (0x0004) ACC_PROTECTED

  protected org.apache.batik.gvt.text.TextPaintInfo tpi;
    descriptor: Lorg/apache/batik/gvt/text/TextPaintInfo;
    flags: (0x0004) ACC_PROTECTED

  private static final org.apache.batik.bridge.TextLayoutFactory COMPLEX_SCRIPT_TEXT_LAYOUT_FACTORY;
    descriptor: Lorg/apache/batik/bridge/TextLayoutFactory;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 62
            ldc Lorg/apache/fop/svg/NativeTextPainter;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.fop.svg.NativeTextPainter.$assertionsDisabled:Z
         3: .line 65
            ldc Lorg/apache/fop/svg/NativeTextPainter;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
         4: .line 383
            new org.apache.fop.svg.NativeTextPainter$1
            dup
            invokespecial org.apache.fop.svg.NativeTextPainter$1.<init>:()V
         5: .line 382
            putstatic org.apache.fop.svg.NativeTextPainter.COMPLEX_SCRIPT_TEXT_LAYOUT_FACTORY:Lorg/apache/batik/bridge/TextLayoutFactory;
         6: .line 392
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.fop.fonts.FontInfo);
    descriptor: (Lorg/apache/fop/fonts/FontInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // org.apache.fop.fonts.FontInfo fontInfo
         0: .line 81
            aload 0 /* this */
            invokespecial org.apache.batik.bridge.StrokingTextPainter.<init>:()V
         1: .line 82
            aload 0 /* this */
            aload 1 /* fontInfo */
            putfield org.apache.fop.svg.NativeTextPainter.fontInfo:Lorg/apache/fop/fonts/FontInfo;
         2: .line 83
            aload 0 /* this */
            new org.apache.fop.svg.font.FOPFontFamilyResolverImpl
            dup
            aload 1 /* fontInfo */
            invokespecial org.apache.fop.svg.font.FOPFontFamilyResolverImpl.<init>:(Lorg/apache/fop/fonts/FontInfo;)V
            putfield org.apache.fop.svg.NativeTextPainter.fontFamilyResolver:Lorg/apache/batik/bridge/FontFamilyResolver;
         3: .line 84
            return
        end local 1 // org.apache.fop.fonts.FontInfo fontInfo
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/apache/fop/svg/NativeTextPainter;
            0    4     1  fontInfo  Lorg/apache/fop/fonts/FontInfo;
    MethodParameters:
          Name  Flags
      fontInfo  

  protected abstract boolean isSupported(java.awt.Graphics2D);
    descriptor: (Ljava/awt/Graphics2D;)Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      g2d   

  protected final void paintTextRun(org.apache.batik.bridge.StrokingTextPainter$TextRun, java.awt.Graphics2D);
    descriptor: (Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;Ljava/awt/Graphics2D;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // org.apache.batik.bridge.StrokingTextPainter$TextRun textRun
        start local 2 // java.awt.Graphics2D g2d
         0: .line 101
            aload 0 /* this */
            aload 1 /* textRun */
            invokevirtual org.apache.fop.svg.NativeTextPainter.logTextRun:(Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;)V
         1: .line 102
            aload 1 /* textRun */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getACI:()Ljava/text/AttributedCharacterIterator;
            astore 3 /* runaci */
        start local 3 // java.text.AttributedCharacterIterator runaci
         2: .line 103
            aload 3 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.first:()C
            pop
         3: .line 104
            aload 0 /* this */
            aload 3 /* runaci */
            getstatic org.apache.fop.svg.NativeTextPainter.PAINT_INFO:Ljava/text/AttributedCharacterIterator$Attribute;
            invokeinterface java.text.AttributedCharacterIterator.getAttribute:(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/lang/Object;
            checkcast org.apache.batik.gvt.text.TextPaintInfo
            putfield org.apache.fop.svg.NativeTextPainter.tpi:Lorg/apache/batik/gvt/text/TextPaintInfo;
         4: .line 105
            aload 0 /* this */
            getfield org.apache.fop.svg.NativeTextPainter.tpi:Lorg/apache/batik/gvt/text/TextPaintInfo;
            ifnull 5
            aload 0 /* this */
            getfield org.apache.fop.svg.NativeTextPainter.tpi:Lorg/apache/batik/gvt/text/TextPaintInfo;
            getfield org.apache.batik.gvt.text.TextPaintInfo.visible:Z
            ifne 6
         5: .line 106
      StackMap locals: java.text.AttributedCharacterIterator
      StackMap stack:
            return
         6: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.fop.svg.NativeTextPainter.tpi:Lorg/apache/batik/gvt/text/TextPaintInfo;
            getfield org.apache.batik.gvt.text.TextPaintInfo.composite:Ljava/awt/Composite;
            ifnull 8
         7: .line 109
            aload 2 /* g2d */
            aload 0 /* this */
            getfield org.apache.fop.svg.NativeTextPainter.tpi:Lorg/apache/batik/gvt/text/TextPaintInfo;
            getfield org.apache.batik.gvt.text.TextPaintInfo.composite:Ljava/awt/Composite;
            invokevirtual java.awt.Graphics2D.setComposite:(Ljava/awt/Composite;)V
         8: .line 111
      StackMap locals:
      StackMap stack:
            aload 1 /* textRun */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getLayout:()Lorg/apache/batik/bridge/TextSpanLayout;
            astore 4 /* layout */
        start local 4 // org.apache.batik.bridge.TextSpanLayout layout
         9: .line 112
            aload 4 /* layout */
            invokeinterface org.apache.batik.bridge.TextSpanLayout.getGlyphVector:()Lorg/apache/batik/gvt/font/GVTGlyphVector;
            astore 5 /* gv */
        start local 5 // org.apache.batik.gvt.font.GVTGlyphVector gv
        10: .line 113
            aload 5 /* gv */
            invokeinterface org.apache.batik.gvt.font.GVTGlyphVector.getFont:()Lorg/apache/batik/gvt/font/GVTFont;
            instanceof org.apache.fop.svg.font.FOPGVTFont
            ifne 14
        11: .line 114
            getstatic org.apache.fop.svg.NativeTextPainter.$assertionsDisabled:Z
            ifne 12
            aload 5 /* gv */
            invokeinterface org.apache.batik.gvt.font.GVTGlyphVector.getFont:()Lorg/apache/batik/gvt/font/GVTFont;
            ifnull 12
            aload 5 /* gv */
            invokeinterface org.apache.batik.gvt.font.GVTGlyphVector.getFont:()Lorg/apache/batik/gvt/font/GVTFont;
            instanceof org.apache.batik.bridge.SVGGVTFont
            ifne 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 116
      StackMap locals: org.apache.batik.bridge.TextSpanLayout org.apache.batik.gvt.font.GVTGlyphVector
      StackMap stack:
            aload 1 /* textRun */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getLayout:()Lorg/apache/batik/bridge/TextSpanLayout;
            aload 2 /* g2d */
            invokeinterface org.apache.batik.bridge.TextSpanLayout.draw:(Ljava/awt/Graphics2D;)V
        13: .line 117
            return
        14: .line 119
      StackMap locals:
      StackMap stack:
            new java.awt.geom.GeneralPath
            dup
            invokespecial java.awt.geom.GeneralPath.<init>:()V
            astore 6 /* debugShapes */
        start local 6 // java.awt.geom.GeneralPath debugShapes
        15: .line 120
            aload 0 /* this */
            aload 2 /* g2d */
            invokevirtual org.apache.fop.svg.NativeTextPainter.preparePainting:(Ljava/awt/Graphics2D;)V
        16: .line 121
            aload 0 /* this */
            invokevirtual org.apache.fop.svg.NativeTextPainter.saveGraphicsState:()V
        17: .line 122
            aload 0 /* this */
            aload 2 /* g2d */
            invokevirtual java.awt.Graphics2D.getTransform:()Ljava/awt/geom/AffineTransform;
            invokevirtual org.apache.fop.svg.NativeTextPainter.setInitialTransform:(Ljava/awt/geom/AffineTransform;)V
        18: .line 123
            aload 0 /* this */
            aload 2 /* g2d */
            invokevirtual java.awt.Graphics2D.getClip:()Ljava/awt/Shape;
            invokevirtual org.apache.fop.svg.NativeTextPainter.clip:(Ljava/awt/Shape;)V
        19: .line 124
            aload 0 /* this */
            invokevirtual org.apache.fop.svg.NativeTextPainter.beginTextObject:()V
        20: .line 125
            aload 0 /* this */
            aload 5 /* gv */
            checkcast org.apache.fop.svg.font.FOPGVTGlyphVector
            aload 6 /* debugShapes */
            invokevirtual org.apache.fop.svg.NativeTextPainter.writeGlyphs:(Lorg/apache/fop/svg/font/FOPGVTGlyphVector;Ljava/awt/geom/GeneralPath;)V
        21: .line 126
            aload 0 /* this */
            invokevirtual org.apache.fop.svg.NativeTextPainter.endTextObject:()V
        22: .line 127
            aload 0 /* this */
            invokevirtual org.apache.fop.svg.NativeTextPainter.restoreGraphicsState:()V
        end local 6 // java.awt.geom.GeneralPath debugShapes
        23: .line 134
            return
        end local 5 // org.apache.batik.gvt.font.GVTGlyphVector gv
        end local 4 // org.apache.batik.bridge.TextSpanLayout layout
        end local 3 // java.text.AttributedCharacterIterator runaci
        end local 2 // java.awt.Graphics2D g2d
        end local 1 // org.apache.batik.bridge.StrokingTextPainter$TextRun textRun
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   24     0         this  Lorg/apache/fop/svg/NativeTextPainter;
            0   24     1      textRun  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
            0   24     2          g2d  Ljava/awt/Graphics2D;
            2   24     3       runaci  Ljava/text/AttributedCharacterIterator;
            9   24     4       layout  Lorg/apache/batik/bridge/TextSpanLayout;
           10   24     5           gv  Lorg/apache/batik/gvt/font/GVTGlyphVector;
           15   23     6  debugShapes  Ljava/awt/geom/GeneralPath;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      textRun  
      g2d      

  protected void writeGlyphs(org.apache.fop.svg.font.FOPGVTGlyphVector, java.awt.geom.GeneralPath);
    descriptor: (Lorg/apache/fop/svg/font/FOPGVTGlyphVector;Ljava/awt/geom/GeneralPath;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // org.apache.fop.svg.font.FOPGVTGlyphVector gv
        start local 2 // java.awt.geom.GeneralPath debugShapes
         0: .line 137
            new java.awt.geom.AffineTransform
            dup
            invokespecial java.awt.geom.AffineTransform.<init>:()V
            astore 3 /* localTransform */
        start local 3 // java.awt.geom.AffineTransform localTransform
         1: .line 138
            aconst_null
            astore 4 /* prevPos */
        start local 4 // java.awt.geom.Point2D prevPos
         2: .line 139
            aconst_null
            astore 5 /* prevGlyphTransform */
        start local 5 // java.awt.geom.AffineTransform prevGlyphTransform
         3: .line 140
            aload 0 /* this */
            aload 1 /* gv */
            invokevirtual org.apache.fop.svg.font.FOPGVTGlyphVector.getFont:()Lorg/apache/batik/gvt/font/GVTFont;
            checkcast org.apache.fop.svg.font.FOPGVTFont
            invokevirtual org.apache.fop.svg.font.FOPGVTFont.getFont:()Lorg/apache/fop/fonts/Font;
            putfield org.apache.fop.svg.NativeTextPainter.font:Lorg/apache/fop/fonts/Font;
         4: .line 141
            iconst_0
            istore 6 /* index */
        start local 6 // int index
         5: aload 1 /* gv */
            invokevirtual org.apache.fop.svg.font.FOPGVTGlyphVector.getNumGlyphs:()I
            istore 7 /* c */
        start local 7 // int c
         6: goto 26
         7: .line 142
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.fop.svg.font.FOPGVTGlyphVector java.awt.geom.GeneralPath java.awt.geom.AffineTransform java.awt.geom.Point2D java.awt.geom.AffineTransform int int
      StackMap stack:
            aload 1 /* gv */
            iload 6 /* index */
            invokevirtual org.apache.fop.svg.font.FOPGVTGlyphVector.isGlyphVisible:(I)Z
            ifne 9
         8: .line 143
            goto 25
         9: .line 145
      StackMap locals:
      StackMap stack:
            aload 1 /* gv */
            iload 6 /* index */
            invokevirtual org.apache.fop.svg.font.FOPGVTGlyphVector.getGlyphPosition:(I)Ljava/awt/geom/Point2D;
            astore 8 /* glyphPos */
        start local 8 // java.awt.geom.Point2D glyphPos
        10: .line 147
            aload 1 /* gv */
            iload 6 /* index */
            invokevirtual org.apache.fop.svg.font.FOPGVTGlyphVector.getGlyphTransform:(I)Ljava/awt/geom/AffineTransform;
            astore 9 /* glyphTransform */
        start local 9 // java.awt.geom.AffineTransform glyphTransform
        11: .line 148
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 13
        12: .line 149
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "pos "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* glyphPos */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", transform "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* glyphTransform */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        13: .line 160
      StackMap locals: java.awt.geom.Point2D java.awt.geom.AffineTransform
      StackMap stack:
            aload 3 /* localTransform */
            invokevirtual java.awt.geom.AffineTransform.setToIdentity:()V
        14: .line 161
            aload 3 /* localTransform */
            aload 8 /* glyphPos */
            invokevirtual java.awt.geom.Point2D.getX:()D
            aload 8 /* glyphPos */
            invokevirtual java.awt.geom.Point2D.getY:()D
            invokevirtual java.awt.geom.AffineTransform.translate:(DD)V
        15: .line 162
            aload 9 /* glyphTransform */
            ifnull 17
        16: .line 163
            aload 3 /* localTransform */
            aload 9 /* glyphTransform */
            invokevirtual java.awt.geom.AffineTransform.concatenate:(Ljava/awt/geom/AffineTransform;)V
        17: .line 165
      StackMap locals:
      StackMap stack:
            aload 3 /* localTransform */
            dconst_1
            ldc -1.0
            invokevirtual java.awt.geom.AffineTransform.scale:(DD)V
        18: .line 167
            aload 0 /* this */
            aload 4 /* prevPos */
            aload 8 /* glyphPos */
            aload 9 /* glyphTransform */
            ifnonnull 19
            aload 5 /* prevGlyphTransform */
            ifnonnull 19
            iconst_0
            goto 20
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.fop.svg.font.FOPGVTGlyphVector java.awt.geom.GeneralPath java.awt.geom.AffineTransform java.awt.geom.Point2D java.awt.geom.AffineTransform int int java.awt.geom.Point2D java.awt.geom.AffineTransform
      StackMap stack: org.apache.fop.svg.NativeTextPainter java.awt.geom.Point2D java.awt.geom.Point2D
        19: iconst_1
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.fop.svg.font.FOPGVTGlyphVector java.awt.geom.GeneralPath java.awt.geom.AffineTransform java.awt.geom.Point2D java.awt.geom.AffineTransform int int java.awt.geom.Point2D java.awt.geom.AffineTransform
      StackMap stack: org.apache.fop.svg.NativeTextPainter java.awt.geom.Point2D java.awt.geom.Point2D int
        20: invokevirtual org.apache.fop.svg.NativeTextPainter.positionGlyph:(Ljava/awt/geom/Point2D;Ljava/awt/geom/Point2D;Z)V
        21: .line 168
            aload 1 /* gv */
            iload 6 /* index */
            invokevirtual org.apache.fop.svg.font.FOPGVTGlyphVector.getGlyphCode:(I)I
            i2c
            istore 10 /* glyph */
        start local 10 // char glyph
        22: .line 170
            aload 8 /* glyphPos */
            astore 4 /* prevPos */
        23: .line 171
            aload 9 /* glyphTransform */
            astore 5 /* prevGlyphTransform */
        24: .line 173
            aload 0 /* this */
            iload 10 /* glyph */
            aload 3 /* localTransform */
            invokevirtual org.apache.fop.svg.NativeTextPainter.writeGlyph:(CLjava/awt/geom/AffineTransform;)V
        end local 10 // char glyph
        end local 9 // java.awt.geom.AffineTransform glyphTransform
        end local 8 // java.awt.geom.Point2D glyphPos
        25: .line 141
      StackMap locals:
      StackMap stack:
            iinc 6 /* index */ 1
      StackMap locals:
      StackMap stack:
        26: iload 6 /* index */
            iload 7 /* c */
            if_icmplt 7
        end local 7 // int c
        end local 6 // int index
        27: .line 175
            return
        end local 5 // java.awt.geom.AffineTransform prevGlyphTransform
        end local 4 // java.awt.geom.Point2D prevPos
        end local 3 // java.awt.geom.AffineTransform localTransform
        end local 2 // java.awt.geom.GeneralPath debugShapes
        end local 1 // org.apache.fop.svg.font.FOPGVTGlyphVector gv
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   28     0                this  Lorg/apache/fop/svg/NativeTextPainter;
            0   28     1                  gv  Lorg/apache/fop/svg/font/FOPGVTGlyphVector;
            0   28     2         debugShapes  Ljava/awt/geom/GeneralPath;
            1   28     3      localTransform  Ljava/awt/geom/AffineTransform;
            2   28     4             prevPos  Ljava/awt/geom/Point2D;
            3   28     5  prevGlyphTransform  Ljava/awt/geom/AffineTransform;
            5   27     6               index  I
            6   27     7                   c  I
           10   25     8            glyphPos  Ljava/awt/geom/Point2D;
           11   25     9      glyphTransform  Ljava/awt/geom/AffineTransform;
           22   25    10               glyph  C
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      gv           
      debugShapes  

  protected void paintTextRuns(java.util.List, java.awt.Graphics2D);
    descriptor: (Ljava/util/List;Ljava/awt/Graphics2D;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // java.util.List textRuns
        start local 2 // java.awt.Graphics2D g2d
         0: .line 179
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 2
         1: .line 180
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "paintTextRuns: count = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* textRuns */
            invokeinterface java.util.List.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         2: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* g2d */
            invokevirtual org.apache.fop.svg.NativeTextPainter.isSupported:(Ljava/awt/Graphics2D;)Z
            ifne 5
         3: .line 183
            aload 0 /* this */
            aload 1 /* textRuns */
            aload 2 /* g2d */
            invokespecial org.apache.batik.bridge.StrokingTextPainter.paintTextRuns:(Ljava/util/List;Ljava/awt/Graphics2D;)V
         4: .line 184
            return
         5: .line 186
      StackMap locals:
      StackMap stack:
            aload 1 /* textRuns */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 12
      StackMap locals: org.apache.fop.svg.NativeTextPainter java.util.List java.awt.Graphics2D top java.util.Iterator
      StackMap stack:
         6: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 3 /* textRun1 */
        start local 3 // java.lang.Object textRun1
         7: .line 187
            aload 3 /* textRun1 */
            checkcast org.apache.batik.bridge.StrokingTextPainter$TextRun
            astore 5 /* textRun */
        start local 5 // org.apache.batik.bridge.StrokingTextPainter$TextRun textRun
         8: .line 189
            aload 0 /* this */
            aload 5 /* textRun */
            aload 2 /* g2d */
            invokevirtual org.apache.fop.svg.NativeTextPainter.paintTextRun:(Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;Ljava/awt/Graphics2D;)V
         9: .line 190
            goto 12
      StackMap locals: org.apache.fop.svg.NativeTextPainter java.util.List java.awt.Graphics2D java.lang.Object java.util.Iterator org.apache.batik.bridge.StrokingTextPainter$TextRun
      StackMap stack: java.io.IOException
        10: astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        11: .line 192
            new java.lang.RuntimeException
            dup
            aload 6 /* ioe */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.io.IOException ioe
        end local 5 // org.apache.batik.bridge.StrokingTextPainter$TextRun textRun
        end local 3 // java.lang.Object textRun1
        12: .line 186
      StackMap locals: org.apache.fop.svg.NativeTextPainter java.util.List java.awt.Graphics2D top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        13: .line 195
            return
        end local 2 // java.awt.Graphics2D g2d
        end local 1 // java.util.List textRuns
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lorg/apache/fop/svg/NativeTextPainter;
            0   14     1  textRuns  Ljava/util/List;
            0   14     2       g2d  Ljava/awt/Graphics2D;
            7   12     3  textRun1  Ljava/lang/Object;
            8   12     5   textRun  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
           11   12     6       ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8     9      10  Class java.io.IOException
    MethodParameters:
          Name  Flags
      textRuns  
      g2d       

  protected java.lang.CharSequence collectCharacters(java.text.AttributedCharacterIterator);
    descriptor: (Ljava/text/AttributedCharacterIterator;)Ljava/lang/CharSequence;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // java.text.AttributedCharacterIterator runaci
         0: .line 203
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 2 /* chars */
        start local 2 // java.lang.StringBuffer chars
         1: .line 204
            aload 1 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.first:()C
            pop
            goto 4
         2: .line 205
      StackMap locals: java.lang.StringBuffer
      StackMap stack:
            aload 2 /* chars */
            aload 1 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.current:()C
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         3: .line 206
            aload 1 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.next:()C
            pop
         4: .line 204
      StackMap locals:
      StackMap stack:
            aload 1 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.getIndex:()I
            aload 1 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.getEndIndex:()I
            if_icmplt 2
         5: .line 208
            aload 2 /* chars */
            areturn
        end local 2 // java.lang.StringBuffer chars
        end local 1 // java.text.AttributedCharacterIterator runaci
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/apache/fop/svg/NativeTextPainter;
            0    6     1  runaci  Ljava/text/AttributedCharacterIterator;
            1    6     2   chars  Ljava/lang/StringBuffer;
    MethodParameters:
        Name  Flags
      runaci  

  public java.util.List computeTextRuns(org.apache.batik.bridge.TextNode, java.text.AttributedCharacterIterator, java.text.AttributedCharacterIterator[]);
    descriptor: (Lorg/apache/batik/bridge/TextNode;Ljava/text/AttributedCharacterIterator;[Ljava/text/AttributedCharacterIterator;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // org.apache.batik.bridge.TextNode node
        start local 2 // java.text.AttributedCharacterIterator nodeACI
        start local 3 // java.text.AttributedCharacterIterator[] chunkACIs
         0: .line 219
            aload 2 /* nodeACI */
            invokeinterface java.text.AttributedCharacterIterator.first:()C
            pop
         1: .line 220
            aload 2 /* nodeACI */
            getstatic org.apache.fop.svg.NativeTextPainter.WRITING_MODE:Ljava/text/AttributedCharacterIterator$Attribute;
            invokeinterface java.text.AttributedCharacterIterator.getAttribute:(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            getstatic org.apache.fop.svg.NativeTextPainter.WRITING_MODE_RTL:Ljava/lang/Integer;
            invokevirtual java.lang.Integer.intValue:()I
            if_icmpne 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 4 /* defaultBidiLevel */
        start local 4 // int defaultBidiLevel
         4: .line 221
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: aload 3 /* chunkACIs */
            arraylength
            istore 6 /* n */
        start local 6 // int n
         6: goto 9
         7: .line 222
      StackMap locals: int int int
      StackMap stack:
            aload 3 /* chunkACIs */
            iload 5 /* i */
            new org.apache.fop.svg.text.BidiAttributedCharacterIterator
            dup
            aload 3 /* chunkACIs */
            iload 5 /* i */
            aaload
            iload 4 /* defaultBidiLevel */
            invokespecial org.apache.fop.svg.text.BidiAttributedCharacterIterator.<init>:(Ljava/text/AttributedCharacterIterator;I)V
            aastore
         8: .line 221
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            iload 6 /* n */
            if_icmplt 7
        end local 6 // int n
        end local 5 // int i
        10: .line 224
            aload 0 /* this */
            aload 1 /* node */
            aload 2 /* nodeACI */
            aload 3 /* chunkACIs */
            aconst_null
            invokespecial org.apache.batik.bridge.StrokingTextPainter.computeTextRuns:(Lorg/apache/batik/bridge/TextNode;Ljava/text/AttributedCharacterIterator;[Ljava/text/AttributedCharacterIterator;[[I)Ljava/util/List;
            areturn
        end local 4 // int defaultBidiLevel
        end local 3 // java.text.AttributedCharacterIterator[] chunkACIs
        end local 2 // java.text.AttributedCharacterIterator nodeACI
        end local 1 // org.apache.batik.bridge.TextNode node
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   11     0              this  Lorg/apache/fop/svg/NativeTextPainter;
            0   11     1              node  Lorg/apache/batik/bridge/TextNode;
            0   11     2           nodeACI  Ljava/text/AttributedCharacterIterator;
            0   11     3         chunkACIs  [Ljava/text/AttributedCharacterIterator;
            4   11     4  defaultBidiLevel  I
            5   10     5                 i  I
            6   10     6                 n  I
    MethodParameters:
           Name  Flags
      node       
      nodeACI    
      chunkACIs  

  protected java.util.Set getTextRunBoundaryAttributes();
    descriptor: ()Ljava/util/Set;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.fop.svg.NativeTextPainter this
         0: .line 230
            aload 0 /* this */
            invokespecial org.apache.batik.bridge.StrokingTextPainter.getTextRunBoundaryAttributes:()Ljava/util/Set;
            astore 1 /* textRunBoundaryAttributes */
        start local 1 // java.util.Set textRunBoundaryAttributes
         1: .line 231
            aload 1 /* textRunBoundaryAttributes */
            getstatic org.apache.fop.svg.NativeTextPainter.BIDI_LEVEL:Ljava/text/AttributedCharacterIterator$Attribute;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 3
         2: .line 232
            aload 1 /* textRunBoundaryAttributes */
            getstatic org.apache.fop.svg.NativeTextPainter.BIDI_LEVEL:Ljava/text/AttributedCharacterIterator$Attribute;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         3: .line 234
      StackMap locals: java.util.Set
      StackMap stack:
            aload 1 /* textRunBoundaryAttributes */
            areturn
        end local 1 // java.util.Set textRunBoundaryAttributes
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    4     0                       this  Lorg/apache/fop/svg/NativeTextPainter;
            1    4     1  textRunBoundaryAttributes  Ljava/util/Set;

  protected java.util.List reorderTextRuns(org.apache.batik.bridge.StrokingTextPainter$TextChunk, java.util.List);
    descriptor: (Lorg/apache/batik/bridge/StrokingTextPainter$TextChunk;Ljava/util/List;)Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // org.apache.batik.bridge.StrokingTextPainter$TextChunk chunk
        start local 2 // java.util.List runs
         0: .line 241
            iconst_m1
            istore 3 /* mn */
        start local 3 // int mn
         1: .line 242
            iconst_m1
            istore 4 /* mx */
        start local 4 // int mx
         2: .line 243
            aload 2 /* runs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 10
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.batik.bridge.StrokingTextPainter$TextChunk java.util.List int int top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.batik.bridge.StrokingTextPainter$TextRun
            astore 5 /* r */
        start local 5 // org.apache.batik.bridge.StrokingTextPainter$TextRun r
         4: .line 244
            aload 5 /* r */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getBidiLevel:()I
            istore 7 /* level */
        start local 7 // int level
         5: .line 245
            iload 7 /* level */
            iflt 10
         6: .line 246
            iload 3 /* mn */
            iflt 7
            iload 7 /* level */
            iload 3 /* mn */
            if_icmpge 8
         7: .line 247
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.batik.bridge.StrokingTextPainter$TextChunk java.util.List int int org.apache.batik.bridge.StrokingTextPainter$TextRun java.util.Iterator int
      StackMap stack:
            iload 7 /* level */
            istore 3 /* mn */
         8: .line 249
      StackMap locals:
      StackMap stack:
            iload 4 /* mx */
            iflt 9
            iload 7 /* level */
            iload 4 /* mx */
            if_icmple 10
         9: .line 250
      StackMap locals:
      StackMap stack:
            iload 7 /* level */
            istore 4 /* mx */
        end local 7 // int level
        end local 5 // org.apache.batik.bridge.StrokingTextPainter$TextRun r
        10: .line 243
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.batik.bridge.StrokingTextPainter$TextChunk java.util.List int int top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        11: .line 256
            iload 4 /* mx */
            ifle 20
        12: .line 257
            iload 4 /* mx */
            istore 5 /* l1 */
        start local 5 // int l1
        13: iload 3 /* mn */
            iconst_1
            iand
            ifne 14
            iload 3 /* mn */
            iconst_1
            iadd
            goto 15
      StackMap locals: org.apache.fop.svg.NativeTextPainter org.apache.batik.bridge.StrokingTextPainter$TextChunk java.util.List int int int
      StackMap stack:
        14: iload 3 /* mn */
      StackMap locals:
      StackMap stack: int
        15: istore 6 /* l2 */
        start local 6 // int l2
        16: goto 19
        17: .line 258
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 2 /* runs */
            iload 5 /* l1 */
            invokevirtual org.apache.fop.svg.NativeTextPainter.reorderRuns:(Ljava/util/List;I)Ljava/util/List;
            astore 2 /* runs */
        18: .line 257
            iinc 5 /* l1 */ -1
      StackMap locals:
      StackMap stack:
        19: iload 5 /* l1 */
            iload 6 /* l2 */
            if_icmpge 17
        end local 6 // int l2
        end local 5 // int l1
        20: .line 263
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 5 /* mirror */
        start local 5 // boolean mirror
        21: .line 264
            aload 0 /* this */
            aload 2 /* runs */
            iload 5 /* mirror */
            invokevirtual org.apache.fop.svg.NativeTextPainter.reverseGlyphs:(Ljava/util/List;Z)V
        22: .line 266
            aload 2 /* runs */
            areturn
        end local 5 // boolean mirror
        end local 4 // int mx
        end local 3 // int mn
        end local 2 // java.util.List runs
        end local 1 // org.apache.batik.bridge.StrokingTextPainter$TextChunk chunk
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   23     0    this  Lorg/apache/fop/svg/NativeTextPainter;
            0   23     1   chunk  Lorg/apache/batik/bridge/StrokingTextPainter$TextChunk;
            0   23     2    runs  Ljava/util/List;
            1   23     3      mn  I
            2   23     4      mx  I
            4   10     5       r  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
            5   10     7   level  I
           13   20     5      l1  I
           16   20     6      l2  I
           21   23     5  mirror  Z
    MethodParameters:
       Name  Flags
      chunk  
      runs   

  private java.util.List reorderRuns(java.util.List, int);
    descriptor: (Ljava/util/List;I)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // java.util.List runs
        start local 2 // int level
         0: .line 270
            getstatic org.apache.fop.svg.NativeTextPainter.$assertionsDisabled:Z
            ifne 1
            iload 2 /* level */
            ifge 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 271
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* runsNew */
        start local 3 // java.util.List runsNew
         2: .line 272
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: aload 1 /* runs */
            invokeinterface java.util.List.size:()I
            istore 5 /* n */
        start local 5 // int n
         4: goto 21
         5: .line 273
      StackMap locals: java.util.List int int
      StackMap stack:
            aload 1 /* runs */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.batik.bridge.StrokingTextPainter$TextRun
            astore 6 /* tri */
        start local 6 // org.apache.batik.bridge.StrokingTextPainter$TextRun tri
         6: .line 274
            aload 6 /* tri */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getBidiLevel:()I
            iload 2 /* level */
            if_icmpge 9
         7: .line 275
            aload 3 /* runsNew */
            aload 6 /* tri */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 276
            goto 20
         9: .line 277
      StackMap locals: org.apache.batik.bridge.StrokingTextPainter$TextRun
      StackMap stack:
            iload 4 /* i */
            istore 7 /* s */
        start local 7 // int s
        10: .line 278
            iload 7 /* s */
            istore 8 /* e */
        start local 8 // int e
        11: .line 279
            goto 16
        12: .line 280
      StackMap locals: int int
      StackMap stack:
            aload 1 /* runs */
            iload 8 /* e */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.batik.bridge.StrokingTextPainter$TextRun
            astore 9 /* tre */
        start local 9 // org.apache.batik.bridge.StrokingTextPainter$TextRun tre
        13: .line 281
            aload 9 /* tre */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getBidiLevel:()I
            iload 2 /* level */
            if_icmpge 15
        14: .line 282
            goto 17
        15: .line 284
      StackMap locals: org.apache.batik.bridge.StrokingTextPainter$TextRun
      StackMap stack:
            iinc 8 /* e */ 1
        end local 9 // org.apache.batik.bridge.StrokingTextPainter$TextRun tre
        16: .line 279
      StackMap locals:
      StackMap stack:
            iload 8 /* e */
            iload 5 /* n */
            if_icmplt 12
        17: .line 287
      StackMap locals:
      StackMap stack:
            iload 7 /* s */
            iload 8 /* e */
            if_icmpge 19
        18: .line 288
            aload 3 /* runsNew */
            aload 0 /* this */
            aload 1 /* runs */
            iload 7 /* s */
            iload 8 /* e */
            invokevirtual org.apache.fop.svg.NativeTextPainter.reverseRuns:(Ljava/util/List;II)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        19: .line 290
      StackMap locals:
      StackMap stack:
            iload 8 /* e */
            iconst_1
            isub
            istore 4 /* i */
        end local 8 // int e
        end local 7 // int s
        end local 6 // org.apache.batik.bridge.StrokingTextPainter$TextRun tri
        20: .line 272
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 4 /* i */
            iload 5 /* n */
            if_icmplt 5
        end local 5 // int n
        end local 4 // int i
        22: .line 293
            aload 3 /* runsNew */
            aload 1 /* runs */
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ifne 24
        23: .line 294
            aload 3 /* runsNew */
            astore 1 /* runs */
        24: .line 296
      StackMap locals:
      StackMap stack:
            aload 1 /* runs */
            areturn
        end local 3 // java.util.List runsNew
        end local 2 // int level
        end local 1 // java.util.List runs
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   25     0     this  Lorg/apache/fop/svg/NativeTextPainter;
            0   25     1     runs  Ljava/util/List;
            0   25     2    level  I
            2   25     3  runsNew  Ljava/util/List;
            3   22     4        i  I
            4   22     5        n  I
            6   20     6      tri  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
           10   20     7        s  I
           11   20     8        e  I
           13   16     9      tre  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
    MethodParameters:
       Name  Flags
      runs   
      level  

  private java.util.List reverseRuns(java.util.List, int, int);
    descriptor: (Ljava/util/List;II)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=9, args_size=4
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // java.util.List runs
        start local 2 // int s
        start local 3 // int e
         0: .line 300
            iload 3 /* e */
            iload 2 /* s */
            isub
            istore 4 /* n */
        start local 4 // int n
         1: .line 301
            new java.util.ArrayList
            dup
            iload 4 /* n */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* runsNew */
        start local 5 // java.util.List runsNew
         2: .line 302
            iload 4 /* n */
            ifle 11
         3: .line 303
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 10
         5: .line 304
      StackMap locals: int java.util.List int
      StackMap stack:
            iload 4 /* n */
            iload 6 /* i */
            isub
            iconst_1
            isub
            istore 7 /* k */
        start local 7 // int k
         6: .line 305
            aload 1 /* runs */
            iload 2 /* s */
            iload 7 /* k */
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.batik.bridge.StrokingTextPainter$TextRun
            astore 8 /* tr */
        start local 8 // org.apache.batik.bridge.StrokingTextPainter$TextRun tr
         7: .line 306
            aload 8 /* tr */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.reverse:()V
         8: .line 307
            aload 5 /* runsNew */
            aload 8 /* tr */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // org.apache.batik.bridge.StrokingTextPainter$TextRun tr
        end local 7 // int k
         9: .line 303
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 6 /* i */
            iload 4 /* n */
            if_icmplt 5
        end local 6 // int i
        11: .line 310
      StackMap locals:
      StackMap stack:
            aload 5 /* runsNew */
            areturn
        end local 5 // java.util.List runsNew
        end local 4 // int n
        end local 3 // int e
        end local 2 // int s
        end local 1 // java.util.List runs
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lorg/apache/fop/svg/NativeTextPainter;
            0   12     1     runs  Ljava/util/List;
            0   12     2        s  I
            0   12     3        e  I
            1   12     4        n  I
            2   12     5  runsNew  Ljava/util/List;
            4   11     6        i  I
            6    9     7        k  I
            7    9     8       tr  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
    MethodParameters:
      Name  Flags
      runs  
      s     
      e     

  private void reverseGlyphs(java.util.List, boolean);
    descriptor: (Ljava/util/List;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // java.util.List runs
        start local 2 // boolean mirror
         0: .line 314
            aload 1 /* runs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 3
      StackMap locals: org.apache.fop.svg.NativeTextPainter java.util.List int top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.batik.bridge.StrokingTextPainter$TextRun
            astore 3 /* r */
        start local 3 // org.apache.batik.bridge.StrokingTextPainter$TextRun r
         2: .line 315
            aload 3 /* r */
            iload 2 /* mirror */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.maybeReverseGlyphs:(Z)V
        end local 3 // org.apache.batik.bridge.StrokingTextPainter$TextRun r
         3: .line 314
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 317
            return
        end local 2 // boolean mirror
        end local 1 // java.util.List runs
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/apache/fop/svg/NativeTextPainter;
            0    5     1    runs  Ljava/util/List;
            0    5     2  mirror  Z
            2    3     3       r  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
    MethodParameters:
        Name  Flags
      runs    
      mirror  

  protected abstract void preparePainting(java.awt.Graphics2D);
    descriptor: (Ljava/awt/Graphics2D;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      g2d   

  protected abstract void saveGraphicsState();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected abstract void restoreGraphicsState();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected abstract void setInitialTransform(java.awt.geom.AffineTransform);
    descriptor: (Ljava/awt/geom/AffineTransform;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      transform  

  protected abstract void clip(java.awt.Shape);
    descriptor: (Ljava/awt/Shape;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      clip  

  protected abstract void beginTextObject();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected abstract void endTextObject();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected abstract void positionGlyph(java.awt.geom.Point2D, java.awt.geom.Point2D, boolean);
    descriptor: (Ljava/awt/geom/Point2D;Ljava/awt/geom/Point2D;Z)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
            Name  Flags
      prevPos     
      glyphPos    
      reposition  

  protected abstract void writeGlyph(char, java.awt.geom.AffineTransform);
    descriptor: (CLjava/awt/geom/AffineTransform;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      glyph      
      transform  

  protected final void logTextRun(org.apache.batik.bridge.StrokingTextPainter$TextRun);
    descriptor: (Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // org.apache.batik.bridge.StrokingTextPainter$TextRun textRun
         0: .line 339
            aload 1 /* textRun */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getACI:()Ljava/text/AttributedCharacterIterator;
            astore 2 /* runaci */
        start local 2 // java.text.AttributedCharacterIterator runaci
         1: .line 340
            aload 1 /* textRun */
            invokevirtual org.apache.batik.bridge.StrokingTextPainter$TextRun.getLayout:()Lorg/apache/batik/bridge/TextSpanLayout;
            astore 3 /* layout */
        start local 3 // org.apache.batik.bridge.TextSpanLayout layout
         2: .line 341
            aload 2 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.first:()C
            pop
         3: .line 342
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 12
         4: .line 343
            aload 2 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.getEndIndex:()I
            aload 2 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.getBeginIndex:()I
            isub
            istore 4 /* charCount */
        start local 4 // int charCount
         5: .line 344
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            ldc "================================================"
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         6: .line 345
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            ldc "New text run:"
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         7: .line 346
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "char count: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* charCount */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         8: .line 347
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "range: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 348
            aload 2 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.getBeginIndex:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " - "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* runaci */
            invokeinterface java.text.AttributedCharacterIterator.getEndIndex:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 347
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        11: .line 349
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "glyph count: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* layout */
            invokeinterface org.apache.batik.bridge.TextSpanLayout.getGlyphCount:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        end local 4 // int charCount
        12: .line 351
      StackMap locals: java.text.AttributedCharacterIterator org.apache.batik.bridge.TextSpanLayout
      StackMap stack:
            return
        end local 3 // org.apache.batik.bridge.TextSpanLayout layout
        end local 2 // java.text.AttributedCharacterIterator runaci
        end local 1 // org.apache.batik.bridge.StrokingTextPainter$TextRun textRun
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lorg/apache/fop/svg/NativeTextPainter;
            0   13     1    textRun  Lorg/apache/batik/bridge/StrokingTextPainter$TextRun;
            1   13     2     runaci  Ljava/text/AttributedCharacterIterator;
            2   13     3     layout  Lorg/apache/batik/bridge/TextSpanLayout;
            5   12     4  charCount  I
    MethodParameters:
         Name  Flags
      textRun  

  protected final void logCharacter(char, org.apache.batik.bridge.TextSpanLayout, int, boolean);
    descriptor: (CLorg/apache/batik/bridge/TextSpanLayout;IZ)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.apache.fop.svg.NativeTextPainter this
        start local 1 // char ch
        start local 2 // org.apache.batik.bridge.TextSpanLayout layout
        start local 3 // int index
        start local 4 // boolean visibleChar
         0: .line 361
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 14
         1: .line 362
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "glyph "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* index */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         2: .line 363
            ldc " -> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* layout */
            iload 3 /* index */
            invokeinterface org.apache.batik.bridge.TextSpanLayout.getGlyphIndex:(I)I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " => "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* ch */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 362
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         4: .line 364
            iload 1 /* ch */
            invokestatic org.apache.fop.util.CharUtilities.isAnySpace:(I)Z
            ifeq 7
            iload 1 /* ch */
            bipush 32
            if_icmpeq 7
         5: .line 365
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Space found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* ch */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         6: .line 366
            goto 12
      StackMap locals:
      StackMap stack:
         7: iload 1 /* ch */
            sipush 8205
            if_icmpne 10
         8: .line 367
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "ZWJ found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* ch */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         9: .line 368
            goto 12
      StackMap locals:
      StackMap stack:
        10: iload 1 /* ch */
            sipush 173
            if_icmpne 12
        11: .line 369
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Soft hyphen found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* ch */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        12: .line 371
      StackMap locals:
      StackMap stack:
            iload 4 /* visibleChar */
            ifne 14
        13: .line 372
            getstatic org.apache.fop.svg.NativeTextPainter.log:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Invisible glyph found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* ch */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        14: .line 375
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean visibleChar
        end local 3 // int index
        end local 2 // org.apache.batik.bridge.TextSpanLayout layout
        end local 1 // char ch
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Lorg/apache/fop/svg/NativeTextPainter;
            0   15     1           ch  C
            0   15     2       layout  Lorg/apache/batik/bridge/TextSpanLayout;
            0   15     3        index  I
            0   15     4  visibleChar  Z
    MethodParameters:
             Name  Flags
      ch           
      layout       
      index        
      visibleChar  

  protected org.apache.batik.bridge.FontFamilyResolver getFontFamilyResolver();
    descriptor: ()Lorg/apache/batik/bridge/FontFamilyResolver;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.fop.svg.NativeTextPainter this
         0: .line 379
            aload 0 /* this */
            getfield org.apache.fop.svg.NativeTextPainter.fontFamilyResolver:Lorg/apache/batik/bridge/FontFamilyResolver;
            areturn
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/fop/svg/NativeTextPainter;

  protected org.apache.batik.bridge.TextLayoutFactory getTextLayoutFactory();
    descriptor: ()Lorg/apache/batik/bridge/TextLayoutFactory;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.fop.svg.NativeTextPainter this
         0: .line 396
            getstatic org.apache.fop.svg.NativeTextPainter.COMPLEX_SCRIPT_TEXT_LAYOUT_FACTORY:Lorg/apache/batik/bridge/TextLayoutFactory;
            areturn
        end local 0 // org.apache.fop.svg.NativeTextPainter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/fop/svg/NativeTextPainter;
}
SourceFile: "NativeTextPainter.java"
NestMembers:
  org.apache.fop.svg.NativeTextPainter$1
InnerClasses:
  public Attribute = java.text.AttributedCharacterIterator$Attribute of java.text.AttributedCharacterIterator
  public TextChunk = org.apache.batik.bridge.StrokingTextPainter$TextChunk of org.apache.batik.bridge.StrokingTextPainter
  public TextRun = org.apache.batik.bridge.StrokingTextPainter$TextRun of org.apache.batik.bridge.StrokingTextPainter
  org.apache.fop.svg.NativeTextPainter$1