abstract class com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation implements com.googlecode.lanterna.terminal.IOSafeTerminal
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation
  super_class: java.lang.Object
{
  private final com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration deviceConfiguration;
    descriptor: Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration colorConfiguration;
    descriptor: Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal virtualTerminal;
    descriptor: Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.BlockingQueue<com.googlecode.lanterna.input.KeyStroke> keyQueue;
    descriptor: Ljava/util/concurrent/BlockingQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/BlockingQueue<Lcom/googlecode/lanterna/input/KeyStroke;>;

  private final com.googlecode.lanterna.terminal.swing.TerminalScrollController scrollController;
    descriptor: Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable dirtyCellsLookupTable;
    descriptor: Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String enquiryString;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private java.util.Timer blinkTimer;
    descriptor: Ljava/util/Timer;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

  private com.googlecode.lanterna.TerminalPosition lastDrawnCursorPosition;
    descriptor: Lcom/googlecode/lanterna/TerminalPosition;
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private java.awt.image.BufferedImage backbuffer;
    descriptor: Ljava/awt/image/BufferedImage;
    flags: (0x0002) ACC_PRIVATE

  private java.awt.image.BufferedImage copybuffer;
    descriptor: Ljava/awt/image/BufferedImage;
    flags: (0x0002) ACC_PRIVATE

  private static final java.util.Set<java.lang.Character> TYPED_KEYS_TO_IGNORE;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/Character;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 821
            new java.util.HashSet
            dup
            bipush 6
            anewarray java.lang.Character
            dup
            iconst_0
            bipush 10
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_1
            bipush 9
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_2
            bipush 13
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_3
            bipush 8
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_4
            bipush 27
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            dup
            iconst_5
            bipush 127
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            putstatic com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.TYPED_KEYS_TO_IGNORE:Ljava/util/Set;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.googlecode.lanterna.TerminalSize, com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration, com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration, com.googlecode.lanterna.terminal.swing.TerminalScrollController);
    descriptor: (Lcom/googlecode/lanterna/TerminalSize;Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.TerminalSize initialTerminalSize
        start local 2 // com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration deviceConfiguration
        start local 3 // com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration colorConfiguration
        start local 4 // com.googlecode.lanterna.terminal.swing.TerminalScrollController scrollController
         0: .line 98
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 106
            aload 1 /* initialTerminalSize */
            ifnonnull 3
         2: .line 107
            new com.googlecode.lanterna.TerminalSize
            dup
            bipush 80
            bipush 24
            invokespecial com.googlecode.lanterna.TerminalSize.<init>:(II)V
            astore 1 /* initialTerminalSize */
         3: .line 109
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TerminalSize com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration com.googlecode.lanterna.terminal.swing.TerminalScrollController
      StackMap stack:
            aload 0 /* this */
            new com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal
            dup
            aload 1 /* initialTerminalSize */
            invokespecial com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.<init>:(Lcom/googlecode/lanterna/TerminalSize;)V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
         4: .line 110
            aload 0 /* this */
            new java.util.concurrent.LinkedBlockingQueue
            dup
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
         5: .line 111
            aload 0 /* this */
            aload 2 /* deviceConfiguration */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
         6: .line 112
            aload 0 /* this */
            aload 3 /* colorConfiguration */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
         7: .line 113
            aload 0 /* this */
            aload 4 /* scrollController */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.scrollController:Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
         8: .line 114
            aload 0 /* this */
            new com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable
            dup
            invokespecial com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.<init>:()V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
         9: .line 116
            aload 0 /* this */
            iconst_1
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.cursorIsVisible:Z
        10: .line 117
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enableInput:Z
        11: .line 118
            aload 0 /* this */
            ldc "TerminalEmulator"
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enquiryString:Ljava/lang/String;
        12: .line 119
            aload 0 /* this */
            aconst_null
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
        13: .line 120
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
        14: .line 121
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentHeight:I
        15: .line 122
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentWidth:I
        16: .line 123
            aload 0 /* this */
            aconst_null
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
        17: .line 124
            aload 0 /* this */
            aconst_null
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
        18: .line 125
            aload 0 /* this */
            aconst_null
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
        19: .line 126
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.hasBlinkingText:Z
        20: .line 127
            aload 0 /* this */
            iconst_1
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkOn:Z
        21: .line 128
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.needFullRedraw:Z
        22: .line 131
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 2 /* deviceConfiguration */
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getLineBufferScrollbackSize:()I
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.setBacklogSize:(I)V
        23: .line 132
            return
        end local 4 // com.googlecode.lanterna.terminal.swing.TerminalScrollController scrollController
        end local 3 // com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration colorConfiguration
        end local 2 // com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration deviceConfiguration
        end local 1 // com.googlecode.lanterna.TerminalSize initialTerminalSize
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   24     0                 this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   24     1  initialTerminalSize  Lcom/googlecode/lanterna/TerminalSize;
            0   24     2  deviceConfiguration  Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            0   24     3   colorConfiguration  Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            0   24     4     scrollController  Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
    MethodParameters:
                     Name  Flags
      initialTerminalSize  
      deviceConfiguration  
      colorConfiguration   
      scrollController     

  com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration getDeviceConfiguration();
    descriptor: ()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 135
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration getColorConfiguration();
    descriptor: ()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 139
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  abstract int getFontHeight();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT

  abstract int getFontWidth();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT

  abstract int getHeight();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT

  abstract int getWidth();
    descriptor: ()I
    flags: (0x0400) ACC_ABSTRACT

  abstract java.awt.Font getFontForCharacter(com.googlecode.lanterna.TextCharacter);
    descriptor: (Lcom/googlecode/lanterna/TextCharacter;)Ljava/awt/Font;
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
           Name  Flags
      character  

  abstract boolean isTextAntiAliased();
    descriptor: ()Z
    flags: (0x0400) ACC_ABSTRACT

  abstract void repaint();
    descriptor: ()V
    flags: (0x0400) ACC_ABSTRACT

  synchronized void onCreated();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 191
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.startBlinkTimer:()V
         1: .line 192
            aload 0 /* this */
            iconst_1
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enableInput:Z
         2: .line 195
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.clear:()V
         3: .line 196
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  synchronized void onDestroyed();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 199
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.stopBlinkTimer:()V
         1: .line 200
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enableInput:Z
         2: .line 203
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            new com.googlecode.lanterna.input.KeyStroke
            dup
            getstatic com.googlecode.lanterna.input.KeyType.EOF:Lcom/googlecode/lanterna/input/KeyType;
            invokespecial com.googlecode.lanterna.input.KeyStroke.<init>:(Lcom/googlecode/lanterna/input/KeyType;)V
            invokeinterface java.util.concurrent.BlockingQueue.add:(Ljava/lang/Object;)Z
            pop
         3: .line 204
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  synchronized void startBlinkTimer();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 210
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
            ifnull 2
         1: .line 212
            return
         2: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.util.Timer
            dup
            ldc "LanternaTerminalBlinkTimer"
            iconst_1
            invokespecial java.util.Timer.<init>:(Ljava/lang/String;Z)V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
         3: .line 215
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
            new com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$1
            dup
            aload 0 /* this */
            invokespecial com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$1.<init>:(Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;)V
         4: .line 223
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getBlinkLengthInMilliSeconds:()I
            i2l
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getBlinkLengthInMilliSeconds:()I
            i2l
         5: .line 215
            invokevirtual java.util.Timer.schedule:(Ljava/util/TimerTask;JJ)V
         6: .line 224
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  synchronized void stopBlinkTimer();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 230
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
            ifnonnull 2
         1: .line 232
            return
         2: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
            invokevirtual java.util.Timer.cancel:()V
         3: .line 235
            aload 0 /* this */
            aconst_null
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkTimer:Ljava/util/Timer;
         4: .line 236
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  synchronized java.awt.Dimension getPreferredSize();
    descriptor: ()Ljava/awt/Dimension;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 246
            new java.awt.Dimension
            dup
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontWidth:()I
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getTerminalSize:()Lcom/googlecode/lanterna/TerminalSize;
            invokevirtual com.googlecode.lanterna.TerminalSize.getColumns:()I
            imul
         1: .line 247
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontHeight:()I
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getTerminalSize:()Lcom/googlecode/lanterna/TerminalSize;
            invokevirtual com.googlecode.lanterna.TerminalSize.getRows:()I
            imul
         2: .line 246
            invokespecial java.awt.Dimension.<init>:(II)V
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  synchronized void paintComponent(java.awt.Graphics);
    descriptor: (Ljava/awt/Graphics;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=11, locals=8, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // java.awt.Graphics componentGraphics
         0: .line 255
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            istore 2 /* width */
        start local 2 // int width
         1: .line 256
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            istore 3 /* height */
        start local 3 // int height
         2: .line 258
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.scrollController:Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
         3: .line 259
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getBufferLineCount:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontHeight:()I
            imul
         4: .line 260
            iload 3 /* height */
         5: .line 258
            invokeinterface com.googlecode.lanterna.terminal.swing.TerminalScrollController.updateModel:(II)V
         6: .line 264
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.scrollController:Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
            invokeinterface com.googlecode.lanterna.terminal.swing.TerminalScrollController.getScrollingOffset:()I
            if_icmpne 10
         7: .line 266
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.hasBlinkingText:Z
            ifne 10
         8: .line 268
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.needFullRedraw:Z
            ifne 10
         9: .line 262
            iconst_0
            goto 11
      StackMap locals: int int
      StackMap stack:
        10: iconst_1
      StackMap locals:
      StackMap stack: int
        11: istore 4 /* needToUpdateBackBuffer */
        start local 4 // boolean needToUpdateBackBuffer
        12: .line 271
            iload 2 /* width */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentWidth:I
            if_icmpne 13
            iload 3 /* height */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentHeight:I
            if_icmpeq 18
        13: .line 272
      StackMap locals: int
      StackMap stack:
            iload 2 /* width */
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontWidth:()I
            idiv
            istore 5 /* columns */
        start local 5 // int columns
        14: .line 273
            iload 3 /* height */
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontHeight:()I
            idiv
            istore 6 /* rows */
        start local 6 // int rows
        15: .line 274
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getTerminalSize:()Lcom/googlecode/lanterna/TerminalSize;
            iload 5 /* columns */
            invokevirtual com.googlecode.lanterna.TerminalSize.withColumns:(I)Lcom/googlecode/lanterna/TerminalSize;
            iload 6 /* rows */
            invokevirtual com.googlecode.lanterna.TerminalSize.withRows:(I)Lcom/googlecode/lanterna/TerminalSize;
            astore 7 /* terminalSize */
        start local 7 // com.googlecode.lanterna.TerminalSize terminalSize
        16: .line 275
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 7 /* terminalSize */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.setTerminalSize:(Lcom/googlecode/lanterna/TerminalSize;)V
        17: .line 278
            iconst_1
            istore 4 /* needToUpdateBackBuffer */
        end local 7 // com.googlecode.lanterna.TerminalSize terminalSize
        end local 6 // int rows
        end local 5 // int columns
        18: .line 281
      StackMap locals:
      StackMap stack:
            iload 4 /* needToUpdateBackBuffer */
            ifeq 20
        19: .line 282
            aload 0 /* this */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.scrollController:Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
            invokeinterface com.googlecode.lanterna.terminal.swing.TerminalScrollController.getScrollingOffset:()I
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.updateBackBuffer:(I)V
        20: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.ensureGraphicBufferHasRightSize:()V
        21: .line 286
            aload 1 /* componentGraphics */
            invokevirtual java.awt.Graphics.getClipBounds:()Ljava/awt/Rectangle;
            astore 5 /* clipBounds */
        start local 5 // java.awt.Rectangle clipBounds
        22: .line 287
            aload 5 /* clipBounds */
            ifnonnull 24
        23: .line 288
            new java.awt.Rectangle
            dup
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            invokespecial java.awt.Rectangle.<init>:(IIII)V
            astore 5 /* clipBounds */
        24: .line 290
      StackMap locals: java.awt.Rectangle
      StackMap stack:
            aload 1 /* componentGraphics */
        25: .line 291
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
        26: .line 293
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.x:I
        27: .line 294
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.y:I
        28: .line 295
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.width:I
        29: .line 296
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.height:I
        30: .line 298
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.x:I
        31: .line 299
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.y:I
        32: .line 300
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.width:I
        33: .line 301
            aload 5 /* clipBounds */
            getfield java.awt.Rectangle.height:I
        34: .line 302
            aconst_null
        35: .line 290
            invokevirtual java.awt.Graphics.drawImage:(Ljava/awt/Image;IIIIIIIILjava/awt/image/ImageObserver;)Z
            pop
        36: .line 306
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontWidth:()I
            irem
            istore 6 /* leftoverWidth */
        start local 6 // int leftoverWidth
        37: .line 307
            aload 1 /* componentGraphics */
            getstatic java.awt.Color.BLACK:Ljava/awt/Color;
            invokevirtual java.awt.Graphics.setColor:(Ljava/awt/Color;)V
        38: .line 308
            iload 6 /* leftoverWidth */
            ifle 40
        39: .line 309
            aload 1 /* componentGraphics */
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iload 6 /* leftoverWidth */
            isub
            iconst_0
            iload 6 /* leftoverWidth */
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            invokevirtual java.awt.Graphics.fillRect:(IIII)V
        40: .line 313
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* width */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentWidth:I
        41: .line 314
            aload 0 /* this */
            iload 3 /* height */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentHeight:I
        42: .line 315
            aload 1 /* componentGraphics */
            invokevirtual java.awt.Graphics.dispose:()V
        43: .line 316
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        44: .line 317
            return
        end local 6 // int leftoverWidth
        end local 5 // java.awt.Rectangle clipBounds
        end local 4 // boolean needToUpdateBackBuffer
        end local 3 // int height
        end local 2 // int width
        end local 1 // java.awt.Graphics componentGraphics
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   45     0                    this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   45     1       componentGraphics  Ljava/awt/Graphics;
            1   45     2                   width  I
            2   45     3                  height  I
           12   45     4  needToUpdateBackBuffer  Z
           14   18     5                 columns  I
           15   18     6                    rows  I
           16   18     7            terminalSize  Lcom/googlecode/lanterna/TerminalSize;
           22   45     5              clipBounds  Ljava/awt/Rectangle;
           37   45     6           leftoverWidth  I
    MethodParameters:
                   Name  Flags
      componentGraphics  

  private synchronized void updateBackBuffer(int);
    descriptor: (I)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=11, locals=14, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // int scrollOffsetFromTopInPixels
         0: .line 321
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontWidth:()I
            istore 2 /* fontWidth */
        start local 2 // int fontWidth
         1: .line 322
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontHeight:()I
            istore 3 /* fontHeight */
        start local 3 // int fontHeight
         2: .line 325
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getCursorBufferPosition:()Lcom/googlecode/lanterna/TerminalPosition;
            astore 4 /* cursorPosition */
        start local 4 // com.googlecode.lanterna.TerminalPosition cursorPosition
         3: .line 326
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getTerminalSize:()Lcom/googlecode/lanterna/TerminalSize;
            astore 5 /* viewportSize */
        start local 5 // com.googlecode.lanterna.TerminalSize viewportSize
         4: .line 328
            iload 1 /* scrollOffsetFromTopInPixels */
            iload 3 /* fontHeight */
            idiv
            istore 6 /* firstVisibleRowIndex */
        start local 6 // int firstVisibleRowIndex
         5: .line 329
            iload 1 /* scrollOffsetFromTopInPixels */
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iadd
            iload 3 /* fontHeight */
            idiv
            istore 7 /* lastVisibleRowIndex */
        start local 7 // int lastVisibleRowIndex
         6: .line 332
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.ensureGraphicBufferHasRightSize:()V
         7: .line 333
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.createGraphics:()Ljava/awt/Graphics2D;
            astore 8 /* backbufferGraphics */
        start local 8 // java.awt.Graphics2D backbufferGraphics
         8: .line 335
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.isTextAntiAliased:()Z
            ifeq 11
         9: .line 336
            aload 8 /* backbufferGraphics */
            getstatic java.awt.RenderingHints.KEY_TEXT_ANTIALIASING:Ljava/awt/RenderingHints$Key;
            getstatic java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_ON:Ljava/lang/Object;
            invokevirtual java.awt.Graphics2D.setRenderingHint:(Ljava/awt/RenderingHints$Key;Ljava/lang/Object;)V
        10: .line 337
            aload 8 /* backbufferGraphics */
            getstatic java.awt.RenderingHints.KEY_RENDERING:Ljava/awt/RenderingHints$Key;
            getstatic java.awt.RenderingHints.VALUE_RENDER_QUALITY:Ljava/lang/Object;
            invokevirtual java.awt.Graphics2D.setRenderingHint:(Ljava/awt/RenderingHints$Key;Ljava/lang/Object;)V
        11: .line 340
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation int int int com.googlecode.lanterna.TerminalPosition com.googlecode.lanterna.TerminalSize int int java.awt.Graphics2D
      StackMap stack:
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.isCursorBlinking:()Z
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            astore 9 /* foundBlinkingCharacters */
        start local 9 // java.util.concurrent.atomic.AtomicBoolean foundBlinkingCharacters
        12: .line 341
            aload 0 /* this */
            iload 6 /* firstVisibleRowIndex */
            iload 7 /* lastVisibleRowIndex */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.buildDirtyCellsLookupTable:(II)V
        13: .line 344
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            iload 1 /* scrollOffsetFromTopInPixels */
            if_icmpge 31
        14: .line 345
            iload 1 /* scrollOffsetFromTopInPixels */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            isub
            istore 10 /* gap */
        start local 10 // int gap
        15: .line 346
            iload 10 /* gap */
            iload 3 /* fontHeight */
            idiv
            aload 5 /* viewportSize */
            invokevirtual com.googlecode.lanterna.TerminalSize.getRows:()I
            if_icmpge 29
        16: .line 347
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.createGraphics:()Ljava/awt/Graphics2D;
            astore 11 /* graphics */
        start local 11 // java.awt.Graphics2D graphics
        17: .line 348
            aload 11 /* graphics */
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iload 10 /* gap */
            isub
            invokevirtual java.awt.Graphics2D.setClip:(IIII)V
        18: .line 349
            aload 11 /* graphics */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            iconst_0
            iload 10 /* gap */
            ineg
            aconst_null
            invokevirtual java.awt.Graphics2D.drawImage:(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z
            pop
        19: .line 350
            aload 11 /* graphics */
            invokevirtual java.awt.Graphics2D.dispose:()V
        20: .line 351
            aload 8 /* backbufferGraphics */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            aconst_null
            invokevirtual java.awt.Graphics2D.drawImage:(Ljava/awt/Image;IIIIIIIILjava/awt/image/ImageObserver;)Z
            pop
        21: .line 352
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.isAllDirty:()Z
            ifne 48
        22: .line 354
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iadd
            iload 3 /* fontHeight */
            idiv
            istore 12 /* previousLastVisibleRowIndex */
        start local 12 // int previousLastVisibleRowIndex
        23: .line 355
            iload 12 /* previousLastVisibleRowIndex */
            istore 13 /* row */
        start local 13 // int row
        24: goto 27
        25: .line 356
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation int int int com.googlecode.lanterna.TerminalPosition com.googlecode.lanterna.TerminalSize int int java.awt.Graphics2D java.util.concurrent.atomic.AtomicBoolean int java.awt.Graphics2D int int
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            iload 13 /* row */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setRowDirty:(I)V
        26: .line 355
            iinc 13 /* row */ 1
      StackMap locals:
      StackMap stack:
        27: iload 13 /* row */
            iload 7 /* lastVisibleRowIndex */
            if_icmple 25
        end local 13 // int row
        end local 12 // int previousLastVisibleRowIndex
        end local 11 // java.awt.Graphics2D graphics
        28: .line 359
            goto 48
        29: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setAllDirty:()V
        end local 10 // int gap
        30: .line 363
            goto 48
        31: .line 364
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            iload 1 /* scrollOffsetFromTopInPixels */
            if_icmple 48
        32: .line 365
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            iload 1 /* scrollOffsetFromTopInPixels */
            isub
            istore 10 /* gap */
        start local 10 // int gap
        33: .line 366
            iload 10 /* gap */
            iload 3 /* fontHeight */
            idiv
            aload 5 /* viewportSize */
            invokevirtual com.googlecode.lanterna.TerminalSize.getRows:()I
            if_icmpge 47
        34: .line 367
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.createGraphics:()Ljava/awt/Graphics2D;
            astore 11 /* graphics */
        start local 11 // java.awt.Graphics2D graphics
        35: .line 368
            aload 11 /* graphics */
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iload 10 /* gap */
            isub
            invokevirtual java.awt.Graphics2D.setClip:(IIII)V
        36: .line 369
            aload 11 /* graphics */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            iconst_0
            iconst_0
            aconst_null
            invokevirtual java.awt.Graphics2D.drawImage:(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z
            pop
        37: .line 370
            aload 11 /* graphics */
            invokevirtual java.awt.Graphics2D.dispose:()V
        38: .line 371
            aload 8 /* backbufferGraphics */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
            iconst_0
            iload 10 /* gap */
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iload 10 /* gap */
            isub
            aconst_null
            invokevirtual java.awt.Graphics2D.drawImage:(Ljava/awt/Image;IIIIIIIILjava/awt/image/ImageObserver;)Z
            pop
        39: .line 372
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.isAllDirty:()Z
            ifne 48
        40: .line 374
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
            iload 3 /* fontHeight */
            idiv
            istore 12 /* previousFirstVisibleRowIndex */
        start local 12 // int previousFirstVisibleRowIndex
        41: .line 375
            iload 6 /* firstVisibleRowIndex */
            istore 13 /* row */
        start local 13 // int row
        42: goto 45
        43: .line 376
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation int int int com.googlecode.lanterna.TerminalPosition com.googlecode.lanterna.TerminalSize int int java.awt.Graphics2D java.util.concurrent.atomic.AtomicBoolean int java.awt.Graphics2D int int
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            iload 13 /* row */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setRowDirty:(I)V
        44: .line 375
            iinc 13 /* row */ 1
      StackMap locals:
      StackMap stack:
        45: iload 13 /* row */
            iload 12 /* previousFirstVisibleRowIndex */
            if_icmple 43
        end local 13 // int row
        end local 12 // int previousFirstVisibleRowIndex
        end local 11 // java.awt.Graphics2D graphics
        46: .line 379
            goto 48
        47: .line 381
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setAllDirty:()V
        end local 10 // int gap
        48: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentWidth:I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            if_icmpge 57
        49: .line 387
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.isAllDirty:()Z
            ifne 57
        50: .line 389
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iload 2 /* fontWidth */
            idiv
            istore 10 /* lastVisibleColumnIndex */
        start local 10 // int lastVisibleColumnIndex
        51: .line 390
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentWidth:I
            iload 2 /* fontWidth */
            idiv
            istore 11 /* previousLastVisibleColumnIndex */
        start local 11 // int previousLastVisibleColumnIndex
        52: .line 391
            iload 11 /* previousLastVisibleColumnIndex */
            istore 12 /* column */
        start local 12 // int column
        53: goto 56
        54: .line 392
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            iload 12 /* column */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setColumnDirty:(I)V
        55: .line 391
            iinc 12 /* column */ 1
      StackMap locals:
      StackMap stack:
        56: iload 12 /* column */
            iload 10 /* lastVisibleColumnIndex */
            if_icmple 54
        end local 12 // int column
        end local 11 // int previousLastVisibleColumnIndex
        end local 10 // int lastVisibleColumnIndex
        57: .line 396
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentHeight:I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            if_icmpge 65
        58: .line 397
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.isAllDirty:()Z
            ifne 65
        59: .line 399
            iload 1 /* scrollOffsetFromTopInPixels */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastComponentHeight:I
            iadd
            iload 3 /* fontHeight */
            idiv
            istore 10 /* previousLastVisibleRowIndex */
        start local 10 // int previousLastVisibleRowIndex
        60: .line 400
            iload 10 /* previousLastVisibleRowIndex */
            istore 11 /* row */
        start local 11 // int row
        61: goto 64
        62: .line 401
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            iload 11 /* row */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setRowDirty:(I)V
        63: .line 400
            iinc 11 /* row */ 1
      StackMap locals:
      StackMap stack:
        64: iload 11 /* row */
            iload 7 /* lastVisibleRowIndex */
            if_icmple 62
        end local 11 // int row
        end local 10 // int previousLastVisibleRowIndex
        65: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            iload 6 /* firstVisibleRowIndex */
            iload 7 /* lastVisibleRowIndex */
            aload 0 /* this */
            aload 5 /* viewportSize */
            aload 4 /* cursorPosition */
            aload 9 /* foundBlinkingCharacters */
            iload 2 /* fontWidth */
            aload 8 /* backbufferGraphics */
            iload 3 /* fontHeight */
            iload 1 /* scrollOffsetFromTopInPixels */
            invokedynamic onLine(Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;Lcom/googlecode/lanterna/TerminalSize;Lcom/googlecode/lanterna/TerminalPosition;Ljava/util/concurrent/atomic/AtomicBoolean;ILjava/awt/Graphics2D;II)Lcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferWalker;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (ILcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferLine;)V
                  com/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation.lambda$0(Lcom/googlecode/lanterna/TerminalSize;Lcom/googlecode/lanterna/TerminalPosition;Ljava/util/concurrent/atomic/AtomicBoolean;ILjava/awt/Graphics2D;IIILcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferLine;)V (7)
                  (ILcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferLine;)V
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.forEachLine:(IILcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferWalker;)V
        66: .line 454
            aload 8 /* backbufferGraphics */
            invokevirtual java.awt.Graphics2D.dispose:()V
        67: .line 457
            aload 0 /* this */
            aload 9 /* foundBlinkingCharacters */
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.hasBlinkingText:Z
        68: .line 458
            aload 0 /* this */
            aload 4 /* cursorPosition */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
        69: .line 459
            aload 0 /* this */
            iload 1 /* scrollOffsetFromTopInPixels */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastBufferUpdateScrollPosition:I
        70: .line 460
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.needFullRedraw:Z
        71: .line 463
            return
        end local 9 // java.util.concurrent.atomic.AtomicBoolean foundBlinkingCharacters
        end local 8 // java.awt.Graphics2D backbufferGraphics
        end local 7 // int lastVisibleRowIndex
        end local 6 // int firstVisibleRowIndex
        end local 5 // com.googlecode.lanterna.TerminalSize viewportSize
        end local 4 // com.googlecode.lanterna.TerminalPosition cursorPosition
        end local 3 // int fontHeight
        end local 2 // int fontWidth
        end local 1 // int scrollOffsetFromTopInPixels
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot                            Name  Signature
            0   72     0                            this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   72     1     scrollOffsetFromTopInPixels  I
            1   72     2                       fontWidth  I
            2   72     3                      fontHeight  I
            3   72     4                  cursorPosition  Lcom/googlecode/lanterna/TerminalPosition;
            4   72     5                    viewportSize  Lcom/googlecode/lanterna/TerminalSize;
            5   72     6            firstVisibleRowIndex  I
            6   72     7             lastVisibleRowIndex  I
            8   72     8              backbufferGraphics  Ljava/awt/Graphics2D;
           12   72     9         foundBlinkingCharacters  Ljava/util/concurrent/atomic/AtomicBoolean;
           15   30    10                             gap  I
           17   28    11                        graphics  Ljava/awt/Graphics2D;
           23   28    12     previousLastVisibleRowIndex  I
           24   28    13                             row  I
           33   48    10                             gap  I
           35   46    11                        graphics  Ljava/awt/Graphics2D;
           41   46    12    previousFirstVisibleRowIndex  I
           42   46    13                             row  I
           51   57    10          lastVisibleColumnIndex  I
           52   57    11  previousLastVisibleColumnIndex  I
           53   57    12                          column  I
           60   65    10     previousLastVisibleRowIndex  I
           61   65    11                             row  I
    MethodParameters:
                             Name  Flags
      scrollOffsetFromTopInPixels  final

  private void buildDirtyCellsLookupTable(int, int);
    descriptor: (II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // int firstRowOffset
        start local 2 // int lastRowOffset
         0: .line 466
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.isWholeBufferDirtyThenReset:()Z
            ifne 1
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.needFullRedraw:Z
            ifeq 3
         1: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setAllDirty:()V
         2: .line 468
            return
         3: .line 471
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getTerminalSize:()Lcom/googlecode/lanterna/TerminalSize;
            astore 3 /* viewportSize */
        start local 3 // com.googlecode.lanterna.TerminalSize viewportSize
         4: .line 472
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getCursorBufferPosition:()Lcom/googlecode/lanterna/TerminalPosition;
            astore 4 /* cursorPosition */
        start local 4 // com.googlecode.lanterna.TerminalPosition cursorPosition
         5: .line 474
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            iload 1 /* firstRowOffset */
            iload 2 /* lastRowOffset */
            aload 3 /* viewportSize */
            invokevirtual com.googlecode.lanterna.TerminalSize.getColumns:()I
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.resetAndInitialize:(III)V
         6: .line 475
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            aload 4 /* cursorPosition */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setDirty:(Lcom/googlecode/lanterna/TerminalPosition;)V
         7: .line 476
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            ifnull 13
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            aload 4 /* cursorPosition */
            invokevirtual com.googlecode.lanterna.TerminalPosition.equals:(Ljava/lang/Object;)Z
            ifne 13
         8: .line 477
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getCharacter:(Lcom/googlecode/lanterna/TerminalPosition;)Lcom/googlecode/lanterna/TextCharacter;
            invokevirtual com.googlecode.lanterna.TextCharacter.isDoubleWidth:()Z
            ifeq 10
         9: .line 478
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            iconst_1
            invokevirtual com.googlecode.lanterna.TerminalPosition.withRelativeColumn:(I)Lcom/googlecode/lanterna/TerminalPosition;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setDirty:(Lcom/googlecode/lanterna/TerminalPosition;)V
        10: .line 480
      StackMap locals: com.googlecode.lanterna.TerminalSize com.googlecode.lanterna.TerminalPosition
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            invokevirtual com.googlecode.lanterna.TerminalPosition.getColumn:()I
            ifle 12
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            iconst_m1
            invokevirtual com.googlecode.lanterna.TerminalPosition.withRelativeColumn:(I)Lcom/googlecode/lanterna/TerminalPosition;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getCharacter:(Lcom/googlecode/lanterna/TerminalPosition;)Lcom/googlecode/lanterna/TextCharacter;
            invokevirtual com.googlecode.lanterna.TextCharacter.isDoubleWidth:()Z
            ifeq 12
        11: .line 481
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            iconst_m1
            invokevirtual com.googlecode.lanterna.TerminalPosition.withRelativeColumn:(I)Lcom/googlecode/lanterna/TerminalPosition;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setDirty:(Lcom/googlecode/lanterna/TerminalPosition;)V
        12: .line 483
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.lastDrawnCursorPosition:Lcom/googlecode/lanterna/TerminalPosition;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setDirty:(Lcom/googlecode/lanterna/TerminalPosition;)V
        13: .line 486
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getAndResetDirtyCells:()Ljava/util/TreeSet;
            astore 5 /* dirtyCells */
        start local 5 // java.util.TreeSet dirtyCells
        14: .line 487
            aload 5 /* dirtyCells */
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            astore 7
            goto 17
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation int int com.googlecode.lanterna.TerminalSize com.googlecode.lanterna.TerminalPosition java.util.TreeSet top java.util.Iterator
      StackMap stack:
        15: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.googlecode.lanterna.TerminalPosition
            astore 6 /* position */
        start local 6 // com.googlecode.lanterna.TerminalPosition position
        16: .line 488
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            aload 6 /* position */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.setDirty:(Lcom/googlecode/lanterna/TerminalPosition;)V
        end local 6 // com.googlecode.lanterna.TerminalPosition position
        17: .line 487
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        18: .line 490
            return
        end local 5 // java.util.TreeSet dirtyCells
        end local 4 // com.googlecode.lanterna.TerminalPosition cursorPosition
        end local 3 // com.googlecode.lanterna.TerminalSize viewportSize
        end local 2 // int lastRowOffset
        end local 1 // int firstRowOffset
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   19     0            this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   19     1  firstRowOffset  I
            0   19     2   lastRowOffset  I
            4   19     3    viewportSize  Lcom/googlecode/lanterna/TerminalSize;
            5   19     4  cursorPosition  Lcom/googlecode/lanterna/TerminalPosition;
           14   19     5      dirtyCells  Ljava/util/TreeSet<Lcom/googlecode/lanterna/TerminalPosition;>;
           16   17     6        position  Lcom/googlecode/lanterna/TerminalPosition;
    MethodParameters:
                Name  Flags
      firstRowOffset  
      lastRowOffset   

  private void ensureGraphicBufferHasRightSize();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 493
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            ifnonnull 7
         1: .line 494
            aload 0 /* this */
            new java.awt.image.BufferedImage
            dup
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iconst_2
            imul
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_2
            imul
            iconst_1
            invokespecial java.awt.image.BufferedImage.<init>:(III)V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
         2: .line 495
            aload 0 /* this */
            new java.awt.image.BufferedImage
            dup
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iconst_2
            imul
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_2
            imul
            iconst_1
            invokespecial java.awt.image.BufferedImage.<init>:(III)V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
         3: .line 498
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.createGraphics:()Ljava/awt/Graphics2D;
            astore 1 /* graphics */
        start local 1 // java.awt.Graphics2D graphics
         4: .line 499
            aload 1 /* graphics */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            getstatic com.googlecode.lanterna.TextColor$ANSI.DEFAULT:Lcom/googlecode/lanterna/TextColor$ANSI;
            iconst_0
            iconst_0
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            invokevirtual java.awt.Graphics2D.setColor:(Ljava/awt/Color;)V
         5: .line 500
            aload 1 /* graphics */
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iconst_2
            imul
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_2
            imul
            invokevirtual java.awt.Graphics2D.fillRect:(IIII)V
         6: .line 501
            aload 1 /* graphics */
            invokevirtual java.awt.Graphics2D.dispose:()V
        end local 1 // java.awt.Graphics2D graphics
         7: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            if_icmplt 9
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iconst_4
            imul
            if_icmpgt 9
         8: .line 504
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.getHeight:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            if_icmplt 9
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.getHeight:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_4
            imul
            if_icmple 16
         9: .line 506
      StackMap locals:
      StackMap stack:
            new java.awt.image.BufferedImage
            dup
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iconst_1
            invokestatic java.lang.Math.max:(II)I
            iconst_2
            imul
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_1
            invokestatic java.lang.Math.max:(II)I
            iconst_2
            imul
            iconst_1
            invokespecial java.awt.image.BufferedImage.<init>:(III)V
            astore 1 /* newBackbuffer */
        start local 1 // java.awt.image.BufferedImage newBackbuffer
        10: .line 507
            aload 1 /* newBackbuffer */
            invokevirtual java.awt.image.BufferedImage.createGraphics:()Ljava/awt/Graphics2D;
            astore 2 /* graphics */
        start local 2 // java.awt.Graphics2D graphics
        11: .line 508
            aload 2 /* graphics */
            iconst_0
            iconst_0
            aload 1 /* newBackbuffer */
            invokevirtual java.awt.image.BufferedImage.getWidth:()I
            aload 1 /* newBackbuffer */
            invokevirtual java.awt.image.BufferedImage.getHeight:()I
            invokevirtual java.awt.Graphics2D.fillRect:(IIII)V
        12: .line 509
            aload 2 /* graphics */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            iconst_0
            iconst_0
            aconst_null
            invokevirtual java.awt.Graphics2D.drawImage:(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z
            pop
        13: .line 510
            aload 2 /* graphics */
            invokevirtual java.awt.Graphics2D.dispose:()V
        14: .line 511
            aload 0 /* this */
            aload 1 /* newBackbuffer */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
        15: .line 514
            aload 0 /* this */
            new java.awt.image.BufferedImage
            dup
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            iconst_1
            invokestatic java.lang.Math.max:(II)I
            iconst_2
            imul
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            iconst_1
            invokestatic java.lang.Math.max:(II)I
            iconst_2
            imul
            iconst_1
            invokespecial java.awt.image.BufferedImage.<init>:(III)V
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.copybuffer:Ljava/awt/image/BufferedImage;
        end local 2 // java.awt.Graphics2D graphics
        end local 1 // java.awt.image.BufferedImage newBackbuffer
        16: .line 516
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            4    7     1       graphics  Ljava/awt/Graphics2D;
           10   16     1  newBackbuffer  Ljava/awt/image/BufferedImage;
           11   16     2       graphics  Ljava/awt/Graphics2D;

  private void drawCharacter(java.awt.Graphics, com.googlecode.lanterna.TextCharacter, int, int, java.awt.Color, java.awt.Color, int, int, int, int, boolean);
    descriptor: (Ljava/awt/Graphics;Lcom/googlecode/lanterna/TextCharacter;IILjava/awt/Color;Ljava/awt/Color;IIIIZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=19, args_size=12
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // java.awt.Graphics g
        start local 2 // com.googlecode.lanterna.TextCharacter character
        start local 3 // int columnIndex
        start local 4 // int rowIndex
        start local 5 // java.awt.Color foregroundColor
        start local 6 // java.awt.Color backgroundColor
        start local 7 // int fontWidth
        start local 8 // int fontHeight
        start local 9 // int characterWidth
        start local 10 // int scrollingOffsetInPixels
        start local 11 // boolean drawCursor
         0: .line 531
            iload 3 /* columnIndex */
            iload 7 /* fontWidth */
            imul
            istore 12 /* x */
        start local 12 // int x
         1: .line 532
            iload 4 /* rowIndex */
            iload 8 /* fontHeight */
            imul
            iload 10 /* scrollingOffsetInPixels */
            isub
            istore 13 /* y */
        start local 13 // int y
         2: .line 533
            aload 1 /* g */
            aload 6 /* backgroundColor */
            invokevirtual java.awt.Graphics.setColor:(Ljava/awt/Color;)V
         3: .line 534
            aload 1 /* g */
            iload 12 /* x */
            iload 13 /* y */
            iload 9 /* characterWidth */
            iload 8 /* fontHeight */
            invokevirtual java.awt.Graphics.setClip:(IIII)V
         4: .line 535
            aload 1 /* g */
            iload 12 /* x */
            iload 13 /* y */
            iload 9 /* characterWidth */
            iload 8 /* fontHeight */
            invokevirtual java.awt.Graphics.fillRect:(IIII)V
         5: .line 537
            aload 1 /* g */
            aload 5 /* foregroundColor */
            invokevirtual java.awt.Graphics.setColor:(Ljava/awt/Color;)V
         6: .line 538
            aload 0 /* this */
            aload 2 /* character */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getFontForCharacter:(Lcom/googlecode/lanterna/TextCharacter;)Ljava/awt/Font;
            astore 14 /* font */
        start local 14 // java.awt.Font font
         7: .line 539
            aload 1 /* g */
            aload 14 /* font */
            invokevirtual java.awt.Graphics.setFont:(Ljava/awt/Font;)V
         8: .line 540
            aload 1 /* g */
            invokevirtual java.awt.Graphics.getFontMetrics:()Ljava/awt/FontMetrics;
            astore 15 /* fontMetrics */
        start local 15 // java.awt.FontMetrics fontMetrics
         9: .line 541
            aload 1 /* g */
            aload 2 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.getCharacterString:()Ljava/lang/String;
            iload 12 /* x */
            iload 13 /* y */
            iload 8 /* fontHeight */
            iadd
            aload 15 /* fontMetrics */
            invokevirtual java.awt.FontMetrics.getDescent:()I
            isub
            iconst_1
            iadd
            invokevirtual java.awt.Graphics.drawString:(Ljava/lang/String;II)V
        10: .line 543
            aload 2 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isCrossedOut:()Z
            ifeq 15
        11: .line 545
            iload 12 /* x */
            istore 16 /* lineStartX */
        start local 16 // int lineStartX
        12: .line 546
            iload 13 /* y */
            iload 8 /* fontHeight */
            iconst_2
            idiv
            iadd
            istore 17 /* lineStartY */
        start local 17 // int lineStartY
        13: .line 547
            iload 16 /* lineStartX */
            iload 9 /* characterWidth */
            iadd
            istore 18 /* lineEndX */
        start local 18 // int lineEndX
        14: .line 548
            aload 1 /* g */
            iload 16 /* lineStartX */
            iload 17 /* lineStartY */
            iload 18 /* lineEndX */
            iload 17 /* lineStartY */
            invokevirtual java.awt.Graphics.drawLine:(IIII)V
        end local 18 // int lineEndX
        end local 17 // int lineStartY
        end local 16 // int lineStartX
        15: .line 550
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation java.awt.Graphics com.googlecode.lanterna.TextCharacter int int java.awt.Color java.awt.Color int int int int int int int java.awt.Font java.awt.FontMetrics
      StackMap stack:
            aload 2 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isUnderlined:()Z
            ifeq 20
        16: .line 552
            iload 12 /* x */
            istore 16 /* lineStartX */
        start local 16 // int lineStartX
        17: .line 553
            iload 13 /* y */
            iload 8 /* fontHeight */
            iadd
            aload 15 /* fontMetrics */
            invokevirtual java.awt.FontMetrics.getDescent:()I
            isub
            iconst_1
            iadd
            istore 17 /* lineStartY */
        start local 17 // int lineStartY
        18: .line 554
            iload 16 /* lineStartX */
            iload 9 /* characterWidth */
            iadd
            istore 18 /* lineEndX */
        start local 18 // int lineEndX
        19: .line 555
            aload 1 /* g */
            iload 16 /* lineStartX */
            iload 17 /* lineStartY */
            iload 18 /* lineEndX */
            iload 17 /* lineStartY */
            invokevirtual java.awt.Graphics.drawLine:(IIII)V
        end local 18 // int lineEndX
        end local 17 // int lineStartY
        end local 16 // int lineStartX
        20: .line 558
      StackMap locals:
      StackMap stack:
            iload 11 /* drawCursor */
            ifeq 30
        21: .line 559
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorColor:()Lcom/googlecode/lanterna/TextColor;
            ifnonnull 24
        22: .line 560
            aload 1 /* g */
            aload 5 /* foregroundColor */
            invokevirtual java.awt.Graphics.setColor:(Ljava/awt/Color;)V
        23: .line 561
            goto 25
        24: .line 563
      StackMap locals:
      StackMap stack:
            aload 1 /* g */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorColor:()Lcom/googlecode/lanterna/TextColor;
            iconst_0
            iconst_0
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            invokevirtual java.awt.Graphics.setColor:(Ljava/awt/Color;)V
        25: .line 565
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorStyle:()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            getstatic com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration$CursorStyle.UNDER_BAR:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            if_acmpne 28
        26: .line 566
            aload 1 /* g */
            iload 12 /* x */
            iload 13 /* y */
            iload 8 /* fontHeight */
            iadd
            iconst_3
            isub
            iload 9 /* characterWidth */
            iconst_2
            invokevirtual java.awt.Graphics.fillRect:(IIII)V
        27: .line 567
            goto 30
        28: .line 568
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorStyle:()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            getstatic com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration$CursorStyle.VERTICAL_BAR:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            if_acmpne 30
        29: .line 569
            aload 1 /* g */
            iload 12 /* x */
            iload 13 /* y */
            iconst_1
            iadd
            iconst_2
            iload 8 /* fontHeight */
            iconst_2
            isub
            invokevirtual java.awt.Graphics.fillRect:(IIII)V
        30: .line 572
      StackMap locals:
      StackMap stack:
            return
        end local 15 // java.awt.FontMetrics fontMetrics
        end local 14 // java.awt.Font font
        end local 13 // int y
        end local 12 // int x
        end local 11 // boolean drawCursor
        end local 10 // int scrollingOffsetInPixels
        end local 9 // int characterWidth
        end local 8 // int fontHeight
        end local 7 // int fontWidth
        end local 6 // java.awt.Color backgroundColor
        end local 5 // java.awt.Color foregroundColor
        end local 4 // int rowIndex
        end local 3 // int columnIndex
        end local 2 // com.googlecode.lanterna.TextCharacter character
        end local 1 // java.awt.Graphics g
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   31     0                     this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   31     1                        g  Ljava/awt/Graphics;
            0   31     2                character  Lcom/googlecode/lanterna/TextCharacter;
            0   31     3              columnIndex  I
            0   31     4                 rowIndex  I
            0   31     5          foregroundColor  Ljava/awt/Color;
            0   31     6          backgroundColor  Ljava/awt/Color;
            0   31     7                fontWidth  I
            0   31     8               fontHeight  I
            0   31     9           characterWidth  I
            0   31    10  scrollingOffsetInPixels  I
            0   31    11               drawCursor  Z
            1   31    12                        x  I
            2   31    13                        y  I
            7   31    14                     font  Ljava/awt/Font;
            9   31    15              fontMetrics  Ljava/awt/FontMetrics;
           12   15    16               lineStartX  I
           13   15    17               lineStartY  I
           14   15    18                 lineEndX  I
           17   20    16               lineStartX  I
           18   20    17               lineStartY  I
           19   20    18                 lineEndX  I
    MethodParameters:
                         Name  Flags
      g                        
      character                
      columnIndex              
      rowIndex                 
      foregroundColor          
      backgroundColor          
      fontWidth                
      fontHeight               
      characterWidth           
      scrollingOffsetInPixels  
      drawCursor               

  private java.awt.Color deriveTrueForegroundColor(com.googlecode.lanterna.TextCharacter, boolean);
    descriptor: (Lcom/googlecode/lanterna/TextCharacter;Z)Ljava/awt/Color;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.TextCharacter character
        start local 2 // boolean atCursorLocation
         0: .line 576
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.getForegroundColor:()Lcom/googlecode/lanterna/TextColor;
            astore 3 /* foregroundColor */
        start local 3 // com.googlecode.lanterna.TextColor foregroundColor
         1: .line 577
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.getBackgroundColor:()Lcom/googlecode/lanterna/TextColor;
            astore 4 /* backgroundColor */
        start local 4 // com.googlecode.lanterna.TextColor backgroundColor
         2: .line 578
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isReversed:()Z
            istore 5 /* reverse */
        start local 5 // boolean reverse
         3: .line 579
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isBlinking:()Z
            istore 6 /* blink */
        start local 6 // boolean blink
         4: .line 581
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.cursorIsVisible:Z
            ifeq 8
            iload 2 /* atCursorLocation */
            ifeq 8
         5: .line 582
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorStyle:()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            getstatic com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration$CursorStyle.REVERSED:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            if_acmpne 8
         6: .line 583
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.isCursorBlinking:()Z
            ifeq 7
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkOn:Z
            ifne 8
         7: .line 584
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TextCharacter int com.googlecode.lanterna.TextColor com.googlecode.lanterna.TextColor int int
      StackMap stack:
            iconst_1
            istore 5 /* reverse */
         8: .line 588
      StackMap locals:
      StackMap stack:
            iload 5 /* reverse */
            ifeq 12
            iload 6 /* blink */
            ifeq 9
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkOn:Z
            ifne 12
         9: .line 589
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            aload 4 /* backgroundColor */
            aload 4 /* backgroundColor */
            getstatic com.googlecode.lanterna.TextColor$ANSI.DEFAULT:Lcom/googlecode/lanterna/TextColor$ANSI;
            if_acmpeq 10
            iconst_1
            goto 11
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TextCharacter int com.googlecode.lanterna.TextColor com.googlecode.lanterna.TextColor int int
      StackMap stack: com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration com.googlecode.lanterna.TextColor
        10: iconst_0
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TextCharacter int com.googlecode.lanterna.TextColor com.googlecode.lanterna.TextColor int int
      StackMap stack: com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration com.googlecode.lanterna.TextColor int
        11: aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isBold:()Z
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            areturn
        12: .line 591
      StackMap locals:
      StackMap stack:
            iload 5 /* reverse */
            ifne 14
            iload 6 /* blink */
            ifeq 14
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkOn:Z
            ifeq 14
        13: .line 592
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            aload 4 /* backgroundColor */
            iconst_0
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isBold:()Z
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            areturn
        14: .line 595
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            aload 3 /* foregroundColor */
            iconst_1
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isBold:()Z
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            areturn
        end local 6 // boolean blink
        end local 5 // boolean reverse
        end local 4 // com.googlecode.lanterna.TextColor backgroundColor
        end local 3 // com.googlecode.lanterna.TextColor foregroundColor
        end local 2 // boolean atCursorLocation
        end local 1 // com.googlecode.lanterna.TextCharacter character
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   15     0              this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   15     1         character  Lcom/googlecode/lanterna/TextCharacter;
            0   15     2  atCursorLocation  Z
            1   15     3   foregroundColor  Lcom/googlecode/lanterna/TextColor;
            2   15     4   backgroundColor  Lcom/googlecode/lanterna/TextColor;
            3   15     5           reverse  Z
            4   15     6             blink  Z
    MethodParameters:
                  Name  Flags
      character         
      atCursorLocation  

  private java.awt.Color deriveTrueBackgroundColor(com.googlecode.lanterna.TextCharacter, boolean);
    descriptor: (Lcom/googlecode/lanterna/TextCharacter;Z)Ljava/awt/Color;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.TextCharacter character
        start local 2 // boolean atCursorLocation
         0: .line 600
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.getForegroundColor:()Lcom/googlecode/lanterna/TextColor;
            astore 3 /* foregroundColor */
        start local 3 // com.googlecode.lanterna.TextColor foregroundColor
         1: .line 601
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.getBackgroundColor:()Lcom/googlecode/lanterna/TextColor;
            astore 4 /* backgroundColor */
        start local 4 // com.googlecode.lanterna.TextColor backgroundColor
         2: .line 602
            aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isReversed:()Z
            istore 5 /* reverse */
        start local 5 // boolean reverse
         3: .line 604
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.cursorIsVisible:Z
            ifeq 10
            iload 2 /* atCursorLocation */
            ifeq 10
         4: .line 605
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorStyle:()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            getstatic com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration$CursorStyle.REVERSED:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            if_acmpne 8
         5: .line 606
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.isCursorBlinking:()Z
            ifeq 6
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkOn:Z
            ifne 8
         6: .line 607
      StackMap locals: com.googlecode.lanterna.TextColor com.googlecode.lanterna.TextColor int
      StackMap stack:
            iconst_1
            istore 5 /* reverse */
         7: .line 608
            goto 10
         8: .line 609
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorStyle:()Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            getstatic com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration$CursorStyle.FIXED_BACKGROUND:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration$CursorStyle;
            if_acmpne 10
         9: .line 610
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.getCursorColor:()Lcom/googlecode/lanterna/TextColor;
            astore 4 /* backgroundColor */
        10: .line 614
      StackMap locals:
      StackMap stack:
            iload 5 /* reverse */
            ifeq 14
        11: .line 615
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            aload 3 /* foregroundColor */
            aload 4 /* backgroundColor */
            getstatic com.googlecode.lanterna.TextColor$ANSI.DEFAULT:Lcom/googlecode/lanterna/TextColor$ANSI;
            if_acmpne 12
            iconst_1
            goto 13
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TextCharacter int com.googlecode.lanterna.TextColor com.googlecode.lanterna.TextColor int
      StackMap stack: com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration com.googlecode.lanterna.TextColor
        12: iconst_0
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TextCharacter int com.googlecode.lanterna.TextColor com.googlecode.lanterna.TextColor int
      StackMap stack: com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration com.googlecode.lanterna.TextColor int
        13: aload 1 /* character */
            invokevirtual com.googlecode.lanterna.TextCharacter.isBold:()Z
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            areturn
        14: .line 618
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            aload 4 /* backgroundColor */
            iconst_0
            iconst_0
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            areturn
        end local 5 // boolean reverse
        end local 4 // com.googlecode.lanterna.TextColor backgroundColor
        end local 3 // com.googlecode.lanterna.TextColor foregroundColor
        end local 2 // boolean atCursorLocation
        end local 1 // com.googlecode.lanterna.TextCharacter character
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   15     0              this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   15     1         character  Lcom/googlecode/lanterna/TextCharacter;
            0   15     2  atCursorLocation  Z
            1   15     3   foregroundColor  Lcom/googlecode/lanterna/TextColor;
            2   15     4   backgroundColor  Lcom/googlecode/lanterna/TextColor;
            3   15     5           reverse  Z
    MethodParameters:
                  Name  Flags
      character         
      atCursorLocation  

  void addInput(com.googlecode.lanterna.input.KeyStroke);
    descriptor: (Lcom/googlecode/lanterna/input/KeyStroke;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.input.KeyStroke keyStroke
         0: .line 623
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            aload 1 /* keyStroke */
            invokeinterface java.util.concurrent.BlockingQueue.add:(Ljava/lang/Object;)Z
            pop
         1: .line 624
            return
        end local 1 // com.googlecode.lanterna.input.KeyStroke keyStroke
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  keyStroke  Lcom/googlecode/lanterna/input/KeyStroke;
    MethodParameters:
           Name  Flags
      keyStroke  

  public com.googlecode.lanterna.input.KeyStroke pollInput();
    descriptor: ()Lcom/googlecode/lanterna/input/KeyStroke;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 634
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enableInput:Z
            ifne 2
         1: .line 635
            new com.googlecode.lanterna.input.KeyStroke
            dup
            getstatic com.googlecode.lanterna.input.KeyType.EOF:Lcom/googlecode/lanterna/input/KeyType;
            invokespecial com.googlecode.lanterna.input.KeyStroke.<init>:(Lcom/googlecode/lanterna/input/KeyType;)V
            areturn
         2: .line 637
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.poll:()Ljava/lang/Object;
            checkcast com.googlecode.lanterna.input.KeyStroke
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public com.googlecode.lanterna.input.KeyStroke readInput();
    descriptor: ()Lcom/googlecode/lanterna/input/KeyStroke;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 643
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            dup
            astore 1
            monitorenter
         1: .line 644
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enableInput:Z
            ifne 4
         2: .line 645
            new com.googlecode.lanterna.input.KeyStroke
            dup
            getstatic com.googlecode.lanterna.input.KeyType.EOF:Lcom/googlecode/lanterna/input/KeyType;
            invokespecial com.googlecode.lanterna.input.KeyStroke.<init>:(Lcom/googlecode/lanterna/input/KeyType;)V
            aload 1
            monitorexit
         3: areturn
         4: .line 648
      StackMap locals: java.util.concurrent.BlockingQueue
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.take:()Ljava/lang/Object;
            checkcast com.googlecode.lanterna.input.KeyStroke
         5: aload 1
            monitorexit
         6: areturn
         7: .line 650
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
         8: .line 651
            new java.lang.RuntimeException
            dup
            ldc "Blocking input was interrupted"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 643
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        10: athrow
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
      Exception table:
        from    to  target  type
           4     5       7  Class java.lang.InterruptedException
           1     3       9  any
           4     6       9  any
           7    10       9  any

  public synchronized void enterPrivateMode();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 658
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.enterPrivateMode:()V
         1: .line 659
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.clearBackBuffer:()V
         2: .line 660
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.flush:()V
         3: .line 661
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public synchronized void exitPrivateMode();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 665
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.exitPrivateMode:()V
         1: .line 666
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.clearBackBuffer:()V
         2: .line 667
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.flush:()V
         3: .line 668
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public synchronized void clearScreen();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 672
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.clearScreen:()V
         1: .line 673
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.clearBackBuffer:()V
         2: .line 674
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  private void clearBackBuffer();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 682
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            ifnull 6
         1: .line 683
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.backbuffer:Ljava/awt/image/BufferedImage;
            invokevirtual java.awt.image.BufferedImage.createGraphics:()Ljava/awt/Graphics2D;
            astore 1 /* graphics */
        start local 1 // java.awt.Graphics2D graphics
         2: .line 684
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.colorConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorColorConfiguration;
            getstatic com.googlecode.lanterna.TextColor$ANSI.DEFAULT:Lcom/googlecode/lanterna/TextColor$ANSI;
            iconst_0
            iconst_0
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorColorConfiguration.toAWTColor:(Lcom/googlecode/lanterna/TextColor;ZZ)Ljava/awt/Color;
            astore 2 /* backgroundColor */
        start local 2 // java.awt.Color backgroundColor
         3: .line 685
            aload 1 /* graphics */
            aload 2 /* backgroundColor */
            invokevirtual java.awt.Graphics2D.setColor:(Ljava/awt/Color;)V
         4: .line 686
            aload 1 /* graphics */
            iconst_0
            iconst_0
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getWidth:()I
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.getHeight:()I
            invokevirtual java.awt.Graphics2D.fillRect:(IIII)V
         5: .line 687
            aload 1 /* graphics */
            invokevirtual java.awt.Graphics2D.dispose:()V
        end local 2 // java.awt.Color backgroundColor
        end local 1 // java.awt.Graphics2D graphics
         6: .line 689
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            2    6     1         graphics  Ljava/awt/Graphics2D;
            3    6     2  backgroundColor  Ljava/awt/Color;

  public synchronized void setCursorPosition(int, int);
    descriptor: (II)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // int x
        start local 2 // int y
         0: .line 693
            aload 0 /* this */
            new com.googlecode.lanterna.TerminalPosition
            dup
            iload 1 /* x */
            iload 2 /* y */
            invokespecial com.googlecode.lanterna.TerminalPosition.<init>:(II)V
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.setCursorPosition:(Lcom/googlecode/lanterna/TerminalPosition;)V
         1: .line 694
            return
        end local 2 // int y
        end local 1 // int x
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1     x  I
            0    2     2     y  I
    MethodParameters:
      Name  Flags
      x     
      y     

  public synchronized void setCursorPosition(com.googlecode.lanterna.TerminalPosition);
    descriptor: (Lcom/googlecode/lanterna/TerminalPosition;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.TerminalPosition position
         0: .line 698
            aload 1 /* position */
            invokevirtual com.googlecode.lanterna.TerminalPosition.getColumn:()I
            ifge 2
         1: .line 699
            aload 1 /* position */
            iconst_0
            invokevirtual com.googlecode.lanterna.TerminalPosition.withColumn:(I)Lcom/googlecode/lanterna/TerminalPosition;
            astore 1 /* position */
         2: .line 701
      StackMap locals:
      StackMap stack:
            aload 1 /* position */
            invokevirtual com.googlecode.lanterna.TerminalPosition.getRow:()I
            ifge 4
         3: .line 702
            aload 1 /* position */
            iconst_0
            invokevirtual com.googlecode.lanterna.TerminalPosition.withRow:(I)Lcom/googlecode/lanterna/TerminalPosition;
            astore 1 /* position */
         4: .line 704
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* position */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.setCursorPosition:(Lcom/googlecode/lanterna/TerminalPosition;)V
         5: .line 705
            return
        end local 1 // com.googlecode.lanterna.TerminalPosition position
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    6     1  position  Lcom/googlecode/lanterna/TerminalPosition;
    MethodParameters:
          Name  Flags
      position  

  public com.googlecode.lanterna.TerminalPosition getCursorPosition();
    descriptor: ()Lcom/googlecode/lanterna/TerminalPosition;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 709
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getCursorPosition:()Lcom/googlecode/lanterna/TerminalPosition;
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public void setCursorVisible(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // boolean visible
         0: .line 714
            aload 0 /* this */
            iload 1 /* visible */
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.cursorIsVisible:Z
         1: .line 715
            return
        end local 1 // boolean visible
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  visible  Z
    MethodParameters:
         Name  Flags
      visible  final

  public synchronized void putCharacter(char);
    descriptor: (C)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // char c
         0: .line 719
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            iload 1 /* c */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.putCharacter:(C)V
         1: .line 720
            return
        end local 1 // char c
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1     c  C
    MethodParameters:
      Name  Flags
      c     final

  public void putString(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // java.lang.String string
         0: .line 724
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* string */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.putString:(Ljava/lang/String;)V
         1: .line 725
            return
        end local 1 // java.lang.String string
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  string  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      string  

  public com.googlecode.lanterna.graphics.TextGraphics newTextGraphics();
    descriptor: ()Lcom/googlecode/lanterna/graphics/TextGraphics;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 729
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.newTextGraphics:()Lcom/googlecode/lanterna/graphics/TextGraphics;
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public void enableSGR(com.googlecode.lanterna.SGR);
    descriptor: (Lcom/googlecode/lanterna/SGR;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.SGR sgr
         0: .line 734
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* sgr */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.enableSGR:(Lcom/googlecode/lanterna/SGR;)V
         1: .line 735
            return
        end local 1 // com.googlecode.lanterna.SGR sgr
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1   sgr  Lcom/googlecode/lanterna/SGR;
    MethodParameters:
      Name  Flags
      sgr   final

  public void disableSGR(com.googlecode.lanterna.SGR);
    descriptor: (Lcom/googlecode/lanterna/SGR;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.SGR sgr
         0: .line 739
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* sgr */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.disableSGR:(Lcom/googlecode/lanterna/SGR;)V
         1: .line 740
            return
        end local 1 // com.googlecode.lanterna.SGR sgr
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1   sgr  Lcom/googlecode/lanterna/SGR;
    MethodParameters:
      Name  Flags
      sgr   final

  public void resetColorAndSGR();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 744
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.resetColorAndSGR:()V
         1: .line 745
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public void setForegroundColor(com.googlecode.lanterna.TextColor);
    descriptor: (Lcom/googlecode/lanterna/TextColor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.TextColor color
         0: .line 749
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* color */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.setForegroundColor:(Lcom/googlecode/lanterna/TextColor;)V
         1: .line 750
            return
        end local 1 // com.googlecode.lanterna.TextColor color
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  color  Lcom/googlecode/lanterna/TextColor;
    MethodParameters:
       Name  Flags
      color  final

  public void setBackgroundColor(com.googlecode.lanterna.TextColor);
    descriptor: (Lcom/googlecode/lanterna/TextColor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.TextColor color
         0: .line 754
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* color */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.setBackgroundColor:(Lcom/googlecode/lanterna/TextColor;)V
         1: .line 755
            return
        end local 1 // com.googlecode.lanterna.TextColor color
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  color  Lcom/googlecode/lanterna/TextColor;
    MethodParameters:
       Name  Flags
      color  final

  public synchronized com.googlecode.lanterna.TerminalSize getTerminalSize();
    descriptor: ()Lcom/googlecode/lanterna/TerminalSize;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 759
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.getTerminalSize:()Lcom/googlecode/lanterna/TerminalSize;
            areturn
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public byte[] enquireTerminal(int, java.util.concurrent.TimeUnit);
    descriptor: (ILjava/util/concurrent/TimeUnit;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // int timeout
        start local 2 // java.util.concurrent.TimeUnit timeoutUnit
         0: .line 764
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.enquiryString:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            areturn
        end local 2 // java.util.concurrent.TimeUnit timeoutUnit
        end local 1 // int timeout
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    1     1      timeout  I
            0    1     2  timeoutUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
             Name  Flags
      timeout      
      timeoutUnit  

  public void bell();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 769
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.bellOn:Z
            ifeq 2
         1: .line 770
            return
         2: .line 774
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.bellOn:Z
         3: .line 775
            aload 0 /* this */
            iconst_1
            putfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.needFullRedraw:Z
         4: .line 776
            aload 0 /* this */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.scrollController:Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
            invokeinterface com.googlecode.lanterna.terminal.swing.TerminalScrollController.getScrollingOffset:()I
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.updateBackBuffer:(I)V
         5: .line 777
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.repaint:()V
         6: .line 779
            new com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$2
            dup
            aload 0 /* this */
            ldc "BellSilencer"
            invokespecial com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$2.<init>:(Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;Ljava/lang/String;)V
         7: .line 791
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$2.start:()V
         8: .line 794
            invokestatic java.awt.Toolkit.getDefaultToolkit:()Ljava/awt/Toolkit;
            invokevirtual java.awt.Toolkit.beep:()V
         9: .line 795
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public synchronized void flush();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 799
            aload 0 /* this */
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.scrollController:Lcom/googlecode/lanterna/terminal/swing/TerminalScrollController;
            invokeinterface com.googlecode.lanterna.terminal.swing.TerminalScrollController.getScrollingOffset:()I
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.updateBackBuffer:(I)V
         1: .line 800
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.repaint:()V
         2: .line 801
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 806
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;

  public void addResizeListener(com.googlecode.lanterna.terminal.TerminalResizeListener);
    descriptor: (Lcom/googlecode/lanterna/terminal/TerminalResizeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.terminal.TerminalResizeListener listener
         0: .line 810
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* listener */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.addResizeListener:(Lcom/googlecode/lanterna/terminal/TerminalResizeListener;)V
         1: .line 811
            return
        end local 1 // com.googlecode.lanterna.terminal.TerminalResizeListener listener
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  listener  Lcom/googlecode/lanterna/terminal/TerminalResizeListener;
    MethodParameters:
          Name  Flags
      listener  

  public void removeResizeListener(com.googlecode.lanterna.terminal.TerminalResizeListener);
    descriptor: (Lcom/googlecode/lanterna/terminal/TerminalResizeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // com.googlecode.lanterna.terminal.TerminalResizeListener listener
         0: .line 815
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.virtualTerminal:Lcom/googlecode/lanterna/terminal/virtual/DefaultVirtualTerminal;
            aload 1 /* listener */
            invokevirtual com.googlecode.lanterna.terminal.virtual.DefaultVirtualTerminal.removeResizeListener:(Lcom/googlecode/lanterna/terminal/TerminalResizeListener;)V
         1: .line 816
            return
        end local 1 // com.googlecode.lanterna.terminal.TerminalResizeListener listener
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0    2     1  listener  Lcom/googlecode/lanterna/terminal/TerminalResizeListener;
    MethodParameters:
          Name  Flags
      listener  

  private void pasteClipboardContent();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 975
            invokestatic java.awt.Toolkit.getDefaultToolkit:()Ljava/awt/Toolkit;
            invokevirtual java.awt.Toolkit.getSystemClipboard:()Ljava/awt/datatransfer/Clipboard;
            astore 1 /* systemClipboard */
        start local 1 // java.awt.datatransfer.Clipboard systemClipboard
         1: .line 976
            aload 1 /* systemClipboard */
            ifnull 5
         2: .line 977
            aload 0 /* this */
            aload 1 /* systemClipboard */
            getstatic java.awt.datatransfer.DataFlavor.stringFlavor:Ljava/awt/datatransfer/DataFlavor;
            invokevirtual java.awt.datatransfer.Clipboard.getData:(Ljava/awt/datatransfer/DataFlavor;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.injectStringAsKeyStrokes:(Ljava/lang/String;)V
        end local 1 // java.awt.datatransfer.Clipboard systemClipboard
         3: .line 979
            goto 5
         4: .line 980
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         5: .line 982
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            1    3     1  systemClipboard  Ljava/awt/datatransfer/Clipboard;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception

  private void pasteSelectionContent();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
         0: .line 986
            invokestatic java.awt.Toolkit.getDefaultToolkit:()Ljava/awt/Toolkit;
            invokevirtual java.awt.Toolkit.getSystemSelection:()Ljava/awt/datatransfer/Clipboard;
            astore 1 /* systemSelection */
        start local 1 // java.awt.datatransfer.Clipboard systemSelection
         1: .line 987
            aload 1 /* systemSelection */
            ifnull 5
         2: .line 988
            aload 0 /* this */
            aload 1 /* systemSelection */
            getstatic java.awt.datatransfer.DataFlavor.stringFlavor:Ljava/awt/datatransfer/DataFlavor;
            invokevirtual java.awt.datatransfer.Clipboard.getData:(Ljava/awt/datatransfer/DataFlavor;)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.injectStringAsKeyStrokes:(Ljava/lang/String;)V
        end local 1 // java.awt.datatransfer.Clipboard systemSelection
         3: .line 990
            goto 5
         4: .line 991
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         5: .line 993
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            1    3     1  systemSelection  Ljava/awt/datatransfer/Clipboard;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception

  private void injectStringAsKeyStrokes(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 1 // java.lang.String string
         0: .line 996
            new java.io.StringReader
            dup
            aload 1 /* string */
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            astore 2 /* stringReader */
        start local 2 // java.io.StringReader stringReader
         1: .line 997
            new com.googlecode.lanterna.input.InputDecoder
            dup
            aload 2 /* stringReader */
            invokespecial com.googlecode.lanterna.input.InputDecoder.<init>:(Ljava/io/Reader;)V
            astore 3 /* inputDecoder */
        start local 3 // com.googlecode.lanterna.input.InputDecoder inputDecoder
         2: .line 998
            aload 3 /* inputDecoder */
            new com.googlecode.lanterna.input.DefaultKeyDecodingProfile
            dup
            invokespecial com.googlecode.lanterna.input.DefaultKeyDecodingProfile.<init>:()V
            invokevirtual com.googlecode.lanterna.input.InputDecoder.addProfile:(Lcom/googlecode/lanterna/input/KeyDecodingProfile;)V
         3: .line 1000
            aload 3 /* inputDecoder */
            iconst_0
            invokevirtual com.googlecode.lanterna.input.InputDecoder.getNextCharacter:(Z)Lcom/googlecode/lanterna/input/KeyStroke;
            astore 4 /* keyStroke */
        start local 4 // com.googlecode.lanterna.input.KeyStroke keyStroke
         4: .line 1001
            goto 7
         5: .line 1002
      StackMap locals: java.io.StringReader com.googlecode.lanterna.input.InputDecoder com.googlecode.lanterna.input.KeyStroke
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.keyQueue:Ljava/util/concurrent/BlockingQueue;
            aload 4 /* keyStroke */
            invokeinterface java.util.concurrent.BlockingQueue.add:(Ljava/lang/Object;)Z
            pop
         6: .line 1003
            aload 3 /* inputDecoder */
            iconst_0
            invokevirtual com.googlecode.lanterna.input.InputDecoder.getNextCharacter:(Z)Lcom/googlecode/lanterna/input/KeyStroke;
            astore 4 /* keyStroke */
         7: .line 1001
      StackMap locals:
      StackMap stack:
            aload 4 /* keyStroke */
            ifnull 10
            aload 4 /* keyStroke */
            invokevirtual com.googlecode.lanterna.input.KeyStroke.getKeyType:()Lcom/googlecode/lanterna/input/KeyType;
            getstatic com.googlecode.lanterna.input.KeyType.EOF:Lcom/googlecode/lanterna/input/KeyType;
            if_acmpne 5
        end local 4 // com.googlecode.lanterna.input.KeyStroke keyStroke
         8: .line 1005
            goto 10
         9: .line 1006
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation java.lang.String java.io.StringReader com.googlecode.lanterna.input.InputDecoder
      StackMap stack: java.io.IOException
            pop
        10: .line 1008
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.googlecode.lanterna.input.InputDecoder inputDecoder
        end local 2 // java.io.StringReader stringReader
        end local 1 // java.lang.String string
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0          this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   11     1        string  Ljava/lang/String;
            1   11     2  stringReader  Ljava/io/StringReader;
            2   11     3  inputDecoder  Lcom/googlecode/lanterna/input/InputDecoder;
            4    8     4     keyStroke  Lcom/googlecode/lanterna/input/KeyStroke;
      Exception table:
        from    to  target  type
           3     8       9  Class java.io.IOException
    MethodParameters:
        Name  Flags
      string  

  private void lambda$0(com.googlecode.lanterna.TerminalSize, com.googlecode.lanterna.TerminalPosition, java.util.concurrent.atomic.AtomicBoolean, int, java.awt.Graphics2D, int, int, int, com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine);
    descriptor: (Lcom/googlecode/lanterna/TerminalSize;Lcom/googlecode/lanterna/TerminalPosition;Ljava/util/concurrent/atomic/AtomicBoolean;ILjava/awt/Graphics2D;IIILcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferLine;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=12, locals=19, args_size=10
        start local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
        start local 8 // int rowNumber
        start local 9 // com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine bufferLine
         0: .line 407
            iconst_0
            istore 10 /* column */
        start local 10 // int column
         1: goto 41
         2: .line 408
      StackMap locals: int
      StackMap stack:
            aload 9 /* bufferLine */
            iload 10 /* column */
            invokeinterface com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine.getCharacterAt:(I)Lcom/googlecode/lanterna/TextCharacter;
            astore 11 /* textCharacter */
        start local 11 // com.googlecode.lanterna.TextCharacter textCharacter
         3: .line 409
            aload 2
            iload 10 /* column */
            iload 8 /* rowNumber */
            invokevirtual com.googlecode.lanterna.TerminalPosition.equals:(II)Z
            istore 12 /* atCursorLocation */
        start local 12 // boolean atCursorLocation
         4: .line 412
            iload 12 /* atCursorLocation */
            ifne 9
         5: .line 413
            aload 2
            invokevirtual com.googlecode.lanterna.TerminalPosition.getColumn:()I
            iload 10 /* column */
            iconst_1
            iadd
            if_icmpne 9
         6: .line 414
            aload 2
            invokevirtual com.googlecode.lanterna.TerminalPosition.getRow:()I
            iload 8 /* rowNumber */
            if_icmpne 9
         7: .line 415
            aload 11 /* textCharacter */
            invokevirtual com.googlecode.lanterna.TextCharacter.isDoubleWidth:()Z
            ifeq 9
         8: .line 416
            iconst_1
            istore 12 /* atCursorLocation */
         9: .line 418
      StackMap locals: com.googlecode.lanterna.TextCharacter int
      StackMap stack:
            aload 11 /* textCharacter */
            invokevirtual com.googlecode.lanterna.TextCharacter.getModifiers:()Ljava/util/EnumSet;
            getstatic com.googlecode.lanterna.SGR.BLINK:Lcom/googlecode/lanterna/SGR;
            invokevirtual java.util.EnumSet.contains:(Ljava/lang/Object;)Z
            istore 13 /* isBlinking */
        start local 13 // boolean isBlinking
        10: .line 419
            iload 13 /* isBlinking */
            ifeq 12
        11: .line 420
            aload 3
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
        12: .line 422
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.isAllDirty:()Z
            ifne 13
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.dirtyCellsLookupTable:Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation$DirtyCellsLookupTable;
            iload 8 /* rowNumber */
            iload 10 /* column */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable.isDirty:(II)Z
            ifne 13
            iload 13 /* isBlinking */
            ifeq 38
        13: .line 423
      StackMap locals:
      StackMap stack:
            iload 4
            aload 11 /* textCharacter */
            invokevirtual com.googlecode.lanterna.TextCharacter.isDoubleWidth:()Z
            ifeq 14
            iconst_2
            goto 15
      StackMap locals:
      StackMap stack: int
        14: iconst_1
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TerminalSize com.googlecode.lanterna.TerminalPosition java.util.concurrent.atomic.AtomicBoolean int java.awt.Graphics2D int int int com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine int com.googlecode.lanterna.TextCharacter int int
      StackMap stack: int int
        15: imul
            istore 14 /* characterWidth */
        start local 14 // int characterWidth
        16: .line 424
            aload 0 /* this */
            aload 11 /* textCharacter */
            iload 12 /* atCursorLocation */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deriveTrueForegroundColor:(Lcom/googlecode/lanterna/TextCharacter;Z)Ljava/awt/Color;
            astore 15 /* foregroundColor */
        start local 15 // java.awt.Color foregroundColor
        17: .line 425
            aload 0 /* this */
            aload 11 /* textCharacter */
            iload 12 /* atCursorLocation */
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deriveTrueBackgroundColor:(Lcom/googlecode/lanterna/TextCharacter;Z)Ljava/awt/Color;
            astore 16 /* backgroundColor */
        start local 16 // java.awt.Color backgroundColor
        18: .line 427
            iload 12 /* atCursorLocation */
            ifeq 20
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.deviceConfiguration:Lcom/googlecode/lanterna/terminal/swing/TerminalEmulatorDeviceConfiguration;
            invokevirtual com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration.isCursorBlinking:()Z
            ifeq 19
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.blinkOn:Z
            ifeq 20
      StackMap locals: int java.awt.Color java.awt.Color
      StackMap stack:
        19: iconst_1
            goto 21
      StackMap locals:
      StackMap stack:
        20: iconst_0
      StackMap locals:
      StackMap stack: int
        21: istore 17 /* drawCursor */
        start local 17 // boolean drawCursor
        22: .line 430
            aload 0 /* this */
            getfield com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.bellOn:Z
            ifeq 26
        23: .line 431
            aload 15 /* foregroundColor */
            astore 18 /* temp */
        start local 18 // java.awt.Color temp
        24: .line 432
            aload 16 /* backgroundColor */
            astore 15 /* foregroundColor */
        25: .line 433
            aload 18 /* temp */
            astore 16 /* backgroundColor */
        end local 18 // java.awt.Color temp
        26: .line 436
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 5
        27: .line 437
            aload 11 /* textCharacter */
        28: .line 438
            iload 10 /* column */
        29: .line 439
            iload 8 /* rowNumber */
        30: .line 440
            aload 15 /* foregroundColor */
        31: .line 441
            aload 16 /* backgroundColor */
        32: .line 442
            iload 4
        33: .line 443
            iload 6
        34: .line 444
            iload 14 /* characterWidth */
        35: .line 445
            iload 7
        36: .line 446
            iload 17 /* drawCursor */
        37: .line 436
            invokevirtual com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation.drawCharacter:(Ljava/awt/Graphics;Lcom/googlecode/lanterna/TextCharacter;IILjava/awt/Color;Ljava/awt/Color;IIIIZ)V
        end local 17 // boolean drawCursor
        end local 16 // java.awt.Color backgroundColor
        end local 15 // java.awt.Color foregroundColor
        end local 14 // int characterWidth
        38: .line 448
      StackMap locals: com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation com.googlecode.lanterna.TerminalSize com.googlecode.lanterna.TerminalPosition java.util.concurrent.atomic.AtomicBoolean int java.awt.Graphics2D int int int com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine int com.googlecode.lanterna.TextCharacter int int
      StackMap stack:
            aload 11 /* textCharacter */
            invokevirtual com.googlecode.lanterna.TextCharacter.isDoubleWidth:()Z
            ifeq 40
        39: .line 449
            iinc 10 /* column */ 1
        end local 13 // boolean isBlinking
        end local 12 // boolean atCursorLocation
        end local 11 // com.googlecode.lanterna.TextCharacter textCharacter
        40: .line 407
      StackMap locals:
      StackMap stack:
            iinc 10 /* column */ 1
      StackMap locals:
      StackMap stack:
        41: iload 10 /* column */
            aload 1
            invokevirtual com.googlecode.lanterna.TerminalSize.getColumns:()I
            if_icmplt 2
        end local 10 // int column
        42: .line 452
            return
        end local 9 // com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine bufferLine
        end local 8 // int rowNumber
        end local 0 // com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   43     0              this  Lcom/googlecode/lanterna/terminal/swing/GraphicalTerminalImplementation;
            0   43     8         rowNumber  I
            0   43     9        bufferLine  Lcom/googlecode/lanterna/terminal/virtual/VirtualTerminal$BufferLine;
            1   42    10            column  I
            3   40    11     textCharacter  Lcom/googlecode/lanterna/TextCharacter;
            4   40    12  atCursorLocation  Z
           10   40    13        isBlinking  Z
           16   38    14    characterWidth  I
           17   38    15   foregroundColor  Ljava/awt/Color;
           18   38    16   backgroundColor  Ljava/awt/Color;
           22   38    17        drawCursor  Z
           24   26    18              temp  Ljava/awt/Color;
}
SourceFile: "GraphicalTerminalImplementation.java"
NestMembers:
  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$1  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$2  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$TerminalInputListener  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$TerminalMouseListener
InnerClasses:
  public final ANSI = com.googlecode.lanterna.TextColor$ANSI of com.googlecode.lanterna.TextColor
  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$1
  com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$2
  private DirtyCellsLookupTable = com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$DirtyCellsLookupTable of com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation
  protected TerminalInputListener = com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$TerminalInputListener of com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation
  protected TerminalMouseListener = com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation$TerminalMouseListener of com.googlecode.lanterna.terminal.swing.GraphicalTerminalImplementation
  public final CursorStyle = com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration$CursorStyle of com.googlecode.lanterna.terminal.swing.TerminalEmulatorDeviceConfiguration
  public abstract BufferLine = com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferLine of com.googlecode.lanterna.terminal.virtual.VirtualTerminal
  public abstract BufferWalker = com.googlecode.lanterna.terminal.virtual.VirtualTerminal$BufferWalker of com.googlecode.lanterna.terminal.virtual.VirtualTerminal
  public abstract Key = java.awt.RenderingHints$Key of java.awt.RenderingHints
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles