@Override
  public final void paintIcon(Component c, Graphics g, int x, int y) {
    Icon icon = getUpdatedIcon();
    if (EventQueue.isDispatchThread()) {
      CellRendererPane pane = ComponentUtil.getParentOfType(CellRendererPane.class, c);
      requestRefresh(pane == null ? c : getRendererOwner(pane.getParent()));
    }
    else if (LOG.isDebugEnabled()) {
      LOG.debug(new IllegalStateException("Unexpected thread " + Thread.currentThread().getName()));
    }
    icon.paintIcon(c, g, x, y);
  }
@Override
  public final void paintIcon(Component c, Graphics g, int x, int y)