public class com.googlecode.lanterna.gui2.AnimatedLabel extends com.googlecode.lanterna.gui2.Label
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.googlecode.lanterna.gui2.AnimatedLabel
  super_class: com.googlecode.lanterna.gui2.Label
{
  private static java.util.Timer TIMER;
    descriptor: Ljava/util/Timer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final java.util.WeakHashMap<com.googlecode.lanterna.gui2.AnimatedLabel, java.util.TimerTask> SCHEDULED_TASKS;
    descriptor: Ljava/util/WeakHashMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/WeakHashMap<Lcom/googlecode/lanterna/gui2/AnimatedLabel;Ljava/util/TimerTask;>;

  private final java.util.List<java.lang.String[]> frames;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<[Ljava/lang/String;>;

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 32
            aconst_null
            putstatic com.googlecode.lanterna.gui2.AnimatedLabel.TIMER:Ljava/util/Timer;
         1: .line 33
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            putstatic com.googlecode.lanterna.gui2.AnimatedLabel.SCHEDULED_TASKS:Ljava/util/WeakHashMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.googlecode.lanterna.gui2.AnimatedLabel createClassicSpinningLine();
    descriptor: ()Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            sipush 150
            invokestatic com.googlecode.lanterna.gui2.AnimatedLabel.createClassicSpinningLine:(I)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.googlecode.lanterna.gui2.AnimatedLabel createClassicSpinningLine(int);
    descriptor: (I)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // int speed
         0: .line 49
            new com.googlecode.lanterna.gui2.AnimatedLabel
            dup
            ldc "-"
            invokespecial com.googlecode.lanterna.gui2.AnimatedLabel.<init>:(Ljava/lang/String;)V
            astore 1 /* animatedLabel */
        start local 1 // com.googlecode.lanterna.gui2.AnimatedLabel animatedLabel
         1: .line 50
            aload 1 /* animatedLabel */
            ldc "\\"
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.addFrame:(Ljava/lang/String;)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            pop
         2: .line 51
            aload 1 /* animatedLabel */
            ldc "|"
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.addFrame:(Ljava/lang/String;)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            pop
         3: .line 52
            aload 1 /* animatedLabel */
            ldc "/"
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.addFrame:(Ljava/lang/String;)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            pop
         4: .line 53
            aload 1 /* animatedLabel */
            iload 0 /* speed */
            i2l
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.startAnimation:(J)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            pop
         5: .line 54
            aload 1 /* animatedLabel */
            areturn
        end local 1 // com.googlecode.lanterna.gui2.AnimatedLabel animatedLabel
        end local 0 // int speed
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0          speed  I
            1    6     1  animatedLabel  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    MethodParameters:
       Name  Flags
      speed  

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
        start local 1 // java.lang.String firstFrameText
         0: .line 68
            aload 0 /* this */
            aload 1 /* firstFrameText */
            invokespecial com.googlecode.lanterna.gui2.Label.<init>:(Ljava/lang/String;)V
         1: .line 69
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.googlecode.lanterna.gui2.AnimatedLabel.frames:Ljava/util/List;
         2: .line 70
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.gui2.AnimatedLabel.currentFrame:I
         3: .line 71
            aload 0 /* this */
            getstatic com.googlecode.lanterna.TerminalSize.ZERO:Lcom/googlecode/lanterna/TerminalSize;
            putfield com.googlecode.lanterna.gui2.AnimatedLabel.combinedMaximumPreferredSize:Lcom/googlecode/lanterna/TerminalSize;
         4: .line 73
            aload 0 /* this */
            aload 1 /* firstFrameText */
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.splitIntoMultipleLines:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* lines */
        start local 2 // java.lang.String[] lines
         5: .line 74
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.frames:Ljava/util/List;
            aload 2 /* lines */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 75
            aload 0 /* this */
            aload 2 /* lines */
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.ensurePreferredSize:([Ljava/lang/String;)V
         7: .line 76
            return
        end local 2 // java.lang.String[] lines
        end local 1 // java.lang.String firstFrameText
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            0    8     1  firstFrameText  Ljava/lang/String;
            5    8     2           lines  [Ljava/lang/String;
    MethodParameters:
                Name  Flags
      firstFrameText  

  protected synchronized com.googlecode.lanterna.TerminalSize calculatePreferredSize();
    descriptor: ()Lcom/googlecode/lanterna/TerminalSize;
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
         0: .line 80
            aload 0 /* this */
            invokespecial com.googlecode.lanterna.gui2.Label.calculatePreferredSize:()Lcom/googlecode/lanterna/TerminalSize;
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.combinedMaximumPreferredSize:Lcom/googlecode/lanterna/TerminalSize;
            invokevirtual com.googlecode.lanterna.TerminalSize.max:(Lcom/googlecode/lanterna/TerminalSize;)Lcom/googlecode/lanterna/TerminalSize;
            areturn
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;

  public synchronized com.googlecode.lanterna.gui2.AnimatedLabel addFrame(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
        start local 1 // java.lang.String text
         0: .line 89
            aload 0 /* this */
            aload 1 /* text */
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.splitIntoMultipleLines:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* lines */
        start local 2 // java.lang.String[] lines
         1: .line 90
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.frames:Ljava/util/List;
            aload 2 /* lines */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 91
            aload 0 /* this */
            aload 2 /* lines */
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.ensurePreferredSize:([Ljava/lang/String;)V
         3: .line 92
            aload 0 /* this */
            areturn
        end local 2 // java.lang.String[] lines
        end local 1 // java.lang.String text
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            0    4     1   text  Ljava/lang/String;
            1    4     2  lines  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      text  

  private void ensurePreferredSize(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
        start local 1 // java.lang.String[] lines
         0: .line 96
            aload 0 /* this */
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.combinedMaximumPreferredSize:Lcom/googlecode/lanterna/TerminalSize;
            aload 0 /* this */
            aload 1 /* lines */
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.combinedMaximumPreferredSize:Lcom/googlecode/lanterna/TerminalSize;
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.getBounds:([Ljava/lang/String;Lcom/googlecode/lanterna/TerminalSize;)Lcom/googlecode/lanterna/TerminalSize;
            invokevirtual com.googlecode.lanterna.TerminalSize.max:(Lcom/googlecode/lanterna/TerminalSize;)Lcom/googlecode/lanterna/TerminalSize;
            putfield com.googlecode.lanterna.gui2.AnimatedLabel.combinedMaximumPreferredSize:Lcom/googlecode/lanterna/TerminalSize;
         1: .line 97
            return
        end local 1 // java.lang.String[] lines
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            0    2     1  lines  [Ljava/lang/String;
    MethodParameters:
       Name  Flags
      lines  

  public synchronized void nextFrame();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
         0: .line 104
            aload 0 /* this */
            dup
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.currentFrame:I
            iconst_1
            iadd
            putfield com.googlecode.lanterna.gui2.AnimatedLabel.currentFrame:I
         1: .line 105
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.currentFrame:I
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.frames:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmplt 3
         2: .line 106
            aload 0 /* this */
            iconst_0
            putfield com.googlecode.lanterna.gui2.AnimatedLabel.currentFrame:I
         3: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.frames:Ljava/util/List;
            aload 0 /* this */
            getfield com.googlecode.lanterna.gui2.AnimatedLabel.currentFrame:I
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String[]
            invokespecial com.googlecode.lanterna.gui2.Label.setLines:([Ljava/lang/String;)V
         4: .line 109
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.invalidate:()V
         5: .line 110
            return
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;

  public void onRemoved(com.googlecode.lanterna.gui2.Container);
    descriptor: (Lcom/googlecode/lanterna/gui2/Container;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
        start local 1 // com.googlecode.lanterna.gui2.Container container
         0: .line 114
            aload 0 /* this */
            invokevirtual com.googlecode.lanterna.gui2.AnimatedLabel.stopAnimation:()Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            pop
         1: .line 115
            return
        end local 1 // com.googlecode.lanterna.gui2.Container container
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            0    2     1  container  Lcom/googlecode/lanterna/gui2/Container;
    MethodParameters:
           Name  Flags
      container  

  public synchronized com.googlecode.lanterna.gui2.AnimatedLabel startAnimation(long);
    descriptor: (J)Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
        start local 1 // long millisecondsPerFrame
         0: .line 125
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.TIMER:Ljava/util/Timer;
            ifnonnull 2
         1: .line 126
            new java.util.Timer
            dup
            ldc "AnimatedLabel"
            invokespecial java.util.Timer.<init>:(Ljava/lang/String;)V
            putstatic com.googlecode.lanterna.gui2.AnimatedLabel.TIMER:Ljava/util/Timer;
         2: .line 128
      StackMap locals:
      StackMap stack:
            new com.googlecode.lanterna.gui2.AnimatedLabel$AnimationTimerTask
            dup
            aload 0 /* this */
            invokespecial com.googlecode.lanterna.gui2.AnimatedLabel$AnimationTimerTask.<init>:(Lcom/googlecode/lanterna/gui2/AnimatedLabel;)V
            astore 3 /* animationTimerTask */
        start local 3 // com.googlecode.lanterna.gui2.AnimatedLabel$AnimationTimerTask animationTimerTask
         3: .line 129
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.SCHEDULED_TASKS:Ljava/util/WeakHashMap;
            aload 0 /* this */
            aload 3 /* animationTimerTask */
            invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 130
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.TIMER:Ljava/util/Timer;
            aload 3 /* animationTimerTask */
            lload 1 /* millisecondsPerFrame */
            lload 1 /* millisecondsPerFrame */
            invokevirtual java.util.Timer.scheduleAtFixedRate:(Ljava/util/TimerTask;JJ)V
         5: .line 131
            aload 0 /* this */
            areturn
        end local 3 // com.googlecode.lanterna.gui2.AnimatedLabel$AnimationTimerTask animationTimerTask
        end local 1 // long millisecondsPerFrame
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0                  this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
            0    6     1  millisecondsPerFrame  J
            3    6     3    animationTimerTask  Lcom/googlecode/lanterna/gui2/AnimatedLabel$AnimationTimerTask;
    MethodParameters:
                      Name  Flags
      millisecondsPerFrame  

  public synchronized com.googlecode.lanterna.gui2.AnimatedLabel stopAnimation();
    descriptor: ()Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
         0: .line 140
            aload 0 /* this */
            invokestatic com.googlecode.lanterna.gui2.AnimatedLabel.removeTaskFromTimer:(Lcom/googlecode/lanterna/gui2/AnimatedLabel;)V
         1: .line 141
            aload 0 /* this */
            areturn
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/googlecode/lanterna/gui2/AnimatedLabel;

  private static synchronized void removeTaskFromTimer(com.googlecode.lanterna.gui2.AnimatedLabel);
    descriptor: (Lcom/googlecode/lanterna/gui2/AnimatedLabel;)V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.googlecode.lanterna.gui2.AnimatedLabel animatedLabel
         0: .line 145
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.SCHEDULED_TASKS:Ljava/util/WeakHashMap;
            aload 0 /* animatedLabel */
            invokevirtual java.util.WeakHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.TimerTask
            invokevirtual java.util.TimerTask.cancel:()Z
            pop
         1: .line 146
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.SCHEDULED_TASKS:Ljava/util/WeakHashMap;
            aload 0 /* animatedLabel */
            invokevirtual java.util.WeakHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 147
            invokestatic com.googlecode.lanterna.gui2.AnimatedLabel.canCloseTimer:()V
         3: .line 148
            return
        end local 0 // com.googlecode.lanterna.gui2.AnimatedLabel animatedLabel
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0  animatedLabel  Lcom/googlecode/lanterna/gui2/AnimatedLabel;
    MethodParameters:
               Name  Flags
      animatedLabel  

  private static synchronized void canCloseTimer();
    descriptor: ()V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=0, args_size=0
         0: .line 151
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.SCHEDULED_TASKS:Ljava/util/WeakHashMap;
            invokevirtual java.util.WeakHashMap.isEmpty:()Z
            ifeq 3
         1: .line 152
            getstatic com.googlecode.lanterna.gui2.AnimatedLabel.TIMER:Ljava/util/Timer;
            invokevirtual java.util.Timer.cancel:()V
         2: .line 153
            aconst_null
            putstatic com.googlecode.lanterna.gui2.AnimatedLabel.TIMER:Ljava/util/Timer;
         3: .line 155
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "AnimatedLabel.java"
NestMembers:
  com.googlecode.lanterna.gui2.AnimatedLabel$AnimationTimerTask
InnerClasses:
  private AnimationTimerTask = com.googlecode.lanterna.gui2.AnimatedLabel$AnimationTimerTask of com.googlecode.lanterna.gui2.AnimatedLabel