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

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