@Override
    public void removeNotify() {
      getCaret().setVisible(false); // doesn't happen automatically for some reason and causes Timer leaks
      super.removeNotify();
    }
@Override
    public void removeNotify()