code: public synchronized AnimatedLabel startAnimation(long millisecondsPerFrame) {
          if(TIMER == null) {
              TIMER = new Timer("AnimatedLabel");
          }
          AnimationTimerTask animationTimerTask = new AnimationTimerTask(this);
          SCHEDULED_TASKS.put(this, animationTimerTask);
          TIMER.scheduleAtFixedRate(animationTimerTask, millisecondsPerFrame, millisecondsPerFrame);
          return this;
      }
docs: Starts the animation thread which will periodically call {@code nextFrame()} at the interval specified by the
  {@code millisecondsPerFrame} parameter. After all frames have been cycled through, it will start over from the
  first frame again.
  @param millisecondsPerFrame The interval in between every frame
  @return Itself