Program: 96052
Project: 96052
Buggy source:
/** 
 * Implementation of the mouse move. The mouse is moved into the graphics component.
 * @param graphicsComponent The component to move to
 * @param constraints The more specific constraints. Use this, for example when you want the click point to be relative to a part  of the component (e.g. tree node, table cell, etc)   rather than the overall component itself. May be   <code>null</code>.
 * @param xPos xPos in component           
 * @param yPos yPos in component
 * @param xAbsolute true if x-position should be absolute  
 * @param yAbsolute true if y-position should be absolute  
 * @param clickOptions The click options 
 * @throws StepExecutionException If the click delay is interrupted or the  event confirmation receives a timeout. 
 */
private void moveImpl(Object graphicsComponent,final Rectangle constraints,final int xPos,final boolean xAbsolute,final int yPos,final boolean yAbsolute,ClickOptions clickOptions) throws StepExecutionException {
  if (clickOptions.isScrollToVisible()) {
    ensureComponentVisible((Component)graphicsComponent,constraints);
  }
  Component component=(Component)graphicsComponent;
  preMove(component);
  Rectangle bounds=null;
  bounds=new Rectangle(getLocation(component,new Point(0,0)));
  bounds.width=component.getWidth();
  bounds.height=component.getHeight();
  if (constraints != null) {
    bounds.x+=constraints.x;
    bounds.y+=constraints.y;
    bounds.height=constraints.height;
    bounds.width=constraints.width;
  }
  Point p=PointUtil.calculateAwtPointToGo(xPos,xAbsolute,yPos,yAbsolute,bounds);
  if (isMouseMoveRequired(p)) {
    if (log.isDebugEnabled()) {
      log.debug("String_Node_Str" + p);
    }
    InterceptorOptions options=new InterceptorOptions(new long[]{AWTEvent.MOUSE_MOTION_EVENT_MASK});
    IRobotEventConfirmer confirmer=m_interceptor.intercept(options);
    Point ap=getAdjacentPoint(component,p);
    m_robot.mouseMove(ap.x,ap.y);
    RobotTiming.sleepPostMouseUpDelay();
    m_robot.mouseMove(p.x,p.y);
    if (clickOptions.isConfirmClick()) {
      confirmer.waitToConfirm(component,new MouseMovedAwtEventMatcher());
    }
  }
}

Fixed version (ground truth):
/** 
 * Implementation of the mouse move. The mouse is moved into the graphics component.
 * @param graphicsComponent The component to move to
 * @param constraints The more specific constraints. Use this, for example when you want the click point to be relative to a part  of the component (e.g. tree node, table cell, etc)   rather than the overall component itself. May be   <code>null</code>.
 * @param xPos xPos in component           
 * @param yPos yPos in component
 * @param xAbsolute true if x-position should be absolute  
 * @param yAbsolute true if y-position should be absolute  
 * @param clickOptions The click options 
 * @throws StepExecutionException If the click delay is interrupted or the  event confirmation receives a timeout. 
 */
private void moveImpl(Object graphicsComponent,final Rectangle constraints,final int xPos,final boolean xAbsolute,final int yPos,final boolean yAbsolute,ClickOptions clickOptions) throws StepExecutionException {
  if (clickOptions.isScrollToVisible()) {
    ensureComponentVisible((Component)graphicsComponent,constraints);
    m_eventFlusher.flush();
  }
  Component component=(Component)graphicsComponent;
  preMove(component);
  Rectangle bounds=null;
  bounds=new Rectangle(getLocation(component,new Point(0,0)));
  bounds.width=component.getWidth();
  bounds.height=component.getHeight();
  if (constraints != null) {
    bounds.x+=constraints.x;
    bounds.y+=constraints.y;
    bounds.height=constraints.height;
    bounds.width=constraints.width;
  }
  Point p=PointUtil.calculateAwtPointToGo(xPos,xAbsolute,yPos,yAbsolute,bounds);
  if (isMouseMoveRequired(p)) {
    if (log.isDebugEnabled()) {
      log.debug("String_Node_Str" + p);
    }
    InterceptorOptions options=new InterceptorOptions(new long[]{AWTEvent.MOUSE_MOTION_EVENT_MASK});
    IRobotEventConfirmer confirmer=m_interceptor.intercept(options);
    Point ap=getAdjacentPoint(component,p);
    m_robot.mouseMove(ap.x,ap.y);
    m_eventFlusher.flush();
    m_robot.mouseMove(p.x,p.y);
    m_eventFlusher.flush();
    if (clickOptions.isConfirmClick()) {
      confirmer.waitToConfirm(component,new MouseMovedAwtEventMatcher());
    }
  }
}