Program: 143751
Project: 143751
Buggy source:
private void addDragNDropBehavior(){
  DraggableBehavior compDragBehavior=new DraggableBehavior(){
    @Override protected void onDragEnd(    String id,    int x,    int y,    AjaxRequestTarget ajaxRequestTarget){
      JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDragEnd,getDragComponent(),null);
      event.setData(getDragData());
      event.setDataMimeType(getDragDataMimeType());
      event.setDragResult(getDropResult() ? getCurrentDragOperation() : DRAGNDROP.NONE);
      WebCellBasedView.this.onDragEnd(event);
      super.onDragEnd(id,x,y,ajaxRequestTarget);
    }
    @Override protected void onDragStart(    final String id,    int x,    int y,    AjaxRequestTarget ajaxRequestTarget){
      IComponent comp=getBindedComponentChild(id);
      JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDrag,comp,new Point(x,y));
      setCurrentDragOperation(WebCellBasedView.this.onDrag(event));
      setDragData(event.getData(),event.getDataMimeType());
      setDragComponent(comp);
      setDropResult(false);
    }
    @Override protected void onDrop(    String id,    final String targetid,    int x,    int y,    AjaxRequestTarget ajaxRequestTarget){
      if (getCurrentDragOperation() != DRAGNDROP.NONE) {
        IComponent comp=getBindedComponentChild(targetid);
        JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDrop,comp,new Point(x,y));
        event.setData(getDragData());
        event.setDataMimeType(getDragDataMimeType());
        setDropResult(WebCellBasedView.this.onDrop(event));
      }
    }
    @Override protected void onDropHover(    String id,    final String targetid,    AjaxRequestTarget ajaxRequestTarget){
      if (getCurrentDragOperation() != DRAGNDROP.NONE) {
        IComponent comp=getBindedComponentChild(targetid);
        JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDragOver,comp,null);
        event.setData(getDragData());
        event.setDataMimeType(getDragDataMimeType());
        WebCellBasedView.this.onDragOver(event);
      }
    }
    @Override public IComponent getBindedComponentChild(    final String childId){
      IComponent comp=super.getBindedComponentChild(childId);
      if (comp == null)       comp=WebCellBasedView.this;
      return comp;
    }
  }
;
  compDragBehavior.setUseProxy(true);
  add(compDragBehavior);
}

Fixed version (ground truth):
private void addDragNDropBehavior(){
  DraggableBehavior compDragBehavior=new DraggableBehavior(){
    @Override protected void onDragEnd(    String id,    int x,    int y,    AjaxRequestTarget ajaxRequestTarget){
      if (getCurrentDragOperation() != DRAGNDROP.NONE) {
        JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDragEnd,getDragComponent(),null);
        event.setData(getDragData());
        event.setDataMimeType(getDragDataMimeType());
        event.setDragResult(getDropResult() ? getCurrentDragOperation() : DRAGNDROP.NONE);
        WebCellBasedView.this.onDragEnd(event);
      }
      super.onDragEnd(id,x,y,ajaxRequestTarget);
    }
    @Override protected void onDragStart(    final String id,    int x,    int y,    AjaxRequestTarget ajaxRequestTarget){
      IComponent comp=getBindedComponentChild(id);
      JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDrag,comp,new Point(x,y));
      setCurrentDragOperation(WebCellBasedView.this.onDrag(event));
      setDragData(event.getData(),event.getDataMimeType());
      setDragComponent(comp);
      setDropResult(false);
    }
    @Override protected void onDrop(    String id,    final String targetid,    int x,    int y,    AjaxRequestTarget ajaxRequestTarget){
      if (getCurrentDragOperation() != DRAGNDROP.NONE) {
        IComponent comp=getBindedComponentChild(targetid);
        JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDrop,comp,new Point(x,y));
        event.setData(getDragData());
        event.setDataMimeType(getDragDataMimeType());
        setDropResult(WebCellBasedView.this.onDrop(event));
      }
    }
    @Override protected void onDropHover(    String id,    final String targetid,    AjaxRequestTarget ajaxRequestTarget){
      if (getCurrentDragOperation() != DRAGNDROP.NONE) {
        IComponent comp=getBindedComponentChild(targetid);
        JSDNDEvent event=WebCellBasedView.this.createScriptEvent(EventType.onDragOver,comp,null);
        event.setData(getDragData());
        event.setDataMimeType(getDragDataMimeType());
        WebCellBasedView.this.onDragOver(event);
      }
    }
    @Override public IComponent getBindedComponentChild(    final String childId){
      IComponent comp=super.getBindedComponentChild(childId);
      if (comp == null)       comp=WebCellBasedView.this;
      return comp;
    }
  }
;
  compDragBehavior.setUseProxy(true);
  add(compDragBehavior);
}