&& candidate != mouseEventTarget)
&& candidate != lastComponentEntered)
  void acquireComponentForMouseEvent(MouseEvent me)  {    int x = me.getX ();    int y = me.getY ();    Component candidate = mouseEventTarget;        while(candidate != null)      {        if (candidate.isShowing())          {            // Convert our point to the candidate's parent's space.            Point cp = SwingUtilities.convertPoint(nativeContainer, x, y, candidate);                        // If the event lands inside candidate, we have a hit.            if (candidate.contains(cp.x, cp.y))              {                // If candidate has children, we refine the hit.                if (candidate instanceof Container &&                    ((Container)candidate).getComponentCount() > 0)                                candidate = SwingUtilities.getDeepestComponentAt(candidate, cp.x, cp.y);                break;              }          }                // If candidate isn't showing or doesn't contain point, we back out a level.        candidate = candidate.getParent();      }        if (candidate == null)      {        // We either lost, or never had, a candidate; acquire from our native.        candidate =           SwingUtilities.getDeepestComponentAt(nativeContainer, x, y);      }    // If our candidate is new, inform the old target we're leaving.    if (mouseEventTarget != null        && mouseEventTarget.isShowing()        && mouseEventTarget != candidate)      {        Point tp =           SwingUtilities.convertPoint(nativeContainer,                                       x, y, mouseEventTarget);        MouseEvent exited = new MouseEvent (mouseEventTarget,                                             MouseEvent.MOUSE_EXITED,                                            me.getWhen (),                                             me.getModifiers (),                                             tp.x, tp.y,                                            me.getClickCount (),                                            me.isPopupTrigger (),                                            me.getButton ());        mouseEventTarget.dispatchEvent (exited);         mouseEventTarget = null;      }    // If we have a candidate, maybe enter it.    if (candidate != null)      {        if (candidate.isLightweight()             && candidate.isShowing()            && candidate != nativeContainer            && candidate != mouseEventTarget)	  {			            mouseEventTarget = candidate;            Point cp = SwingUtilities.convertPoint(nativeContainer,                                                    x, y, candidate);            MouseEvent entered = new MouseEvent (mouseEventTarget,                                                  MouseEvent.MOUSE_ENTERED,                                                 me.getWhen (),                                                  me.getModifiers (),                                                  cp.x, cp.y,                                                 me.getClickCount (),                                                 me.isPopupTrigger (),                                                 me.getButton ());            mouseEventTarget.dispatchEvent (entered);          }      }  }