firePopupMenuWillBecomeVisible();
if (old != isVisible()) { firePropertyChange(VISIBLE_CHANGED_PROPERTY, old, (boolean) isVisible());
  public void setVisible(boolean visible)  {    super.setVisible(visible);    firePopupMenuWillBecomeVisible();    if (visible)      {	Container rootContainer = (Container) SwingUtilities.getRoot(invoker);	boolean fit = true;	Dimension size;	// Determine the size of the popup menu	if (this.getSize().width == 0 && this.getSize().width == 0)	  size = this.getPreferredSize();	else	  size = this.getSize();	if ((size.width > (rootContainer.getWidth() - locationX))	    || (size.height > (rootContainer.getHeight() - locationY)))	  fit = false;	if (lightWeightPopupEnabled && fit)	  popup = new LightWeightPopup(this);	else	  {	    if (fit)	      popup = new MediumWeightPopup(this);	    else	      popup = new HeavyWeightPopup(this);	  }	        if (popup instanceof LightWeightPopup             || popup instanceof MediumWeightPopup)          {            JLayeredPane layeredPane;            layeredPane = SwingUtilities.getRootPane(invoker).getLayeredPane();            Point lp = layeredPane.getLocationOnScreen();            Point r = SwingUtilities.getRoot(invoker).getLocationOnScreen();            int px = locationX - (lp.x - r.x);            int py = locationY - (lp.y - r.y);	              popup.show(px, py, size.width, size.height);	  		          }         else          popup.show(locationX, locationY, size.width, size.height);      }    else      {	firePopupMenuWillBecomeInvisible();	popup.hide();      }  }