Program: 170459
Project: 170459
Buggy source:
private IControlHandleList getPointHandles(){
  final ControlHandleList chlist=new ControlHandleList(m_shape);
  HandlerRegistrationManager manager=chlist.getHandlerRegistrationManager();
  ShapeXorYChanged shapeXoYChangedHandler=new ShapeXorYChanged(m_shape,chlist);
  manager.register(m_shape.addNodeDragStartHandler(shapeXoYChangedHandler));
  manager.register(m_shape.addNodeDragMoveHandler(shapeXoYChangedHandler));
  manager.register(m_shape.addNodeDragEndHandler(shapeXoYChangedHandler));
  for (  Point2D point : m_shape.getPoint2DArray()) {
    final Point2D p=point;
    final Circle prim=new Circle(R0).setX(m_shape.getX() + p.getX()).setY(m_shape.getY() + p.getY()).setFillColor(ColorName.RED).setFillAlpha(0.4).setStrokeColor(ColorName.BLACK).setDraggable(true).setDragMode(m_dmode).setStrokeWidth(2);
    prim.setSelectionBoundsOffset(R0 * 0.5);
    chlist.add(new AbstractPointControlHandle(){
      @Override public AbstractPointControlHandle init(){
        ControlXorYChanged handler=new ControlXorYChanged(chlist,m_shape,p,prim,this,m_shape.getLayer());
        register(prim.addNodeDragMoveHandler(handler));
        register(prim.addNodeDragStartHandler(handler));
        register(prim.addNodeDragEndHandler(handler));
        register(prim.addNodeMouseEnterHandler(new NodeMouseEnterHandler(){
          @Override public void onNodeMouseEnter(          NodeMouseEnterEvent event){
            animate(prim,R1);
          }
        }
));
        register(prim.addNodeMouseExitHandler(new NodeMouseExitHandler(){
          @Override public void onNodeMouseExit(          NodeMouseExitEvent event){
            animate(prim,R0);
          }
        }
));
        setPoint(p);
        return this;
      }
      @Override public IPrimitive<?> getControl(){
        return prim;
      }
      @Override public void destroy(){
        super.destroy();
      }
    }
.init());
  }
  return chlist;
}

Fixed version (ground truth):
private IControlHandleList getPointHandles(){
  final ControlHandleList chlist=new ControlHandleList(m_shape);
  HandlerRegistrationManager manager=chlist.getHandlerRegistrationManager();
  ShapeXorYChanged shapeXoYChangedHandler=new ShapeXorYChanged(m_shape,chlist);
  manager.register(m_shape.addNodeDragStartHandler(shapeXoYChangedHandler));
  manager.register(m_shape.addNodeDragMoveHandler(shapeXoYChangedHandler));
  manager.register(m_shape.addNodeDragEndHandler(shapeXoYChangedHandler));
  for (  Point2D point : m_shape.getPoint2DArray()) {
    final Point2D p=point;
    final Circle prim=new Circle(R0).setX(m_shape.getX() + p.getX()).setY(m_shape.getY() + p.getY()).setFillColor(ColorName.DARKRED).setFillAlpha(0.8).setStrokeAlpha(0).setDraggable(true).setDragMode(m_dmode);
    prim.setSelectionBoundsOffset(R0 * 0.5);
    chlist.add(new AbstractPointControlHandle(){
      @Override public AbstractPointControlHandle init(){
        ControlXorYChanged handler=new ControlXorYChanged(chlist,m_shape,p,prim,this,m_shape.getLayer());
        register(prim.addNodeDragMoveHandler(handler));
        register(prim.addNodeDragStartHandler(handler));
        register(prim.addNodeDragEndHandler(handler));
        register(prim.addNodeMouseEnterHandler(new NodeMouseEnterHandler(){
          @Override public void onNodeMouseEnter(          NodeMouseEnterEvent event){
            animate(prim,R1);
          }
        }
));
        register(prim.addNodeMouseExitHandler(new NodeMouseExitHandler(){
          @Override public void onNodeMouseExit(          NodeMouseExitEvent event){
            animate(prim,R0);
          }
        }
));
        setPoint(p);
        return this;
      }
      @Override public IPrimitive<?> getControl(){
        return prim;
      }
      @Override public void destroy(){
        super.destroy();
      }
    }
.init());
  }
  return chlist;
}