void (Component c, Graphics g, int x, int y) { assert period > 0 : "unexpected"; long time = (System.currentTimeMillis() - this.time) % period; float alpha = (float)((Math.cos(2 * Math.PI * time / period) + 1) / 2); if (alpha > 0) { if (alpha < 1 && g instanceof Graphics2D) { Graphics2D g2d = (Graphics2D)g.create(); try { g2d.setComposite(AlphaComposite.SrcAtop.derive(alpha)); icon.paintIcon(c, g2d, x, y); } finally { g2d.dispose(); } } else { icon.paintIcon(c, g, x, y); } } }