Program: 51843
Project: 51843
Buggy source:
/** 
 * this call enables drop behavior for this element. it must be called by the component after the managed swt  object has been created
 */
protected void enableDrop(){
  DropTarget target=new DropTarget(getDndObject(),DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_DEFAULT);
  target.setTransfer(new Transfer[]{SwtDndTypeTransfer.getInstance()});
  target.addDropListener(new DropTargetListener(){
    public void dragEnter(    DropTargetEvent arg0){
      arg0.detail=arg0.operations;
    }
    public void dragLeave(    DropTargetEvent arg0){
    }
    public void dragOperationChanged(    DropTargetEvent arg0){
    }
    public void dragOver(    DropTargetEvent event){
      onSwtDragOver(event);
    }
    public void drop(    DropTargetEvent nativeEvent){
      DropEvent event=new DropEvent();
      DataTransfer dataTransfer=new DataTransfer();
      XulSwtDndType types[]=(XulSwtDndType[])nativeEvent.data;
      SwtElement xulDndSource=null;
      try {
        if (types != null) {
          List<Object> objs=new ArrayList<Object>();
          for (int i=0; i < types.length; i++) {
            if (i == 0) {
              xulDndSource=types[i].getXulSource();
            }
            objs.add(types[i].getValue());
          }
          dataTransfer.setData(objs);
          dataTransfer.setDropEffect(lookupXulEffect(nativeEvent.detail));
        }
 else {
          nativeEvent.detail=DND.DROP_NONE;
          return;
        }
      }
 catch (      Exception e) {
        e.printStackTrace();
      }
      event.setDataTransfer(dataTransfer);
      event.setAccepted(true);
      event.setNativeEvent(nativeEvent);
      resolveDndParentAndIndex(event);
      final String method=getOndrop();
      if (method != null) {
        try {
          Document doc=getDocument();
          XulRoot window=(XulRoot)doc.getRootElement();
          final XulDomContainer con=window.getXulDomContainer();
          con.invoke(method,new Object[]{event});
        }
 catch (        XulException e) {
          logger.error("String_Node_Str" + method,e);
        }
      }
      if (!event.isAccepted()) {
        nativeEvent.detail=DND.DROP_NONE;
        return;
      }
      if (xulDndSource == null) {
        throw new RuntimeException("String_Node_Str");
      }
      xulDndSource.onSwtDragFinished(lookupXulEffect(nativeEvent.detail));
      onSwtDragDropAccepted(event);
    }
    public void dropAccept(    DropTargetEvent arg0){
    }
  }
);
}

Fixed version (ground truth):
/** 
 * this call enables drop behavior for this element. it must be called by the component after the managed swt  object has been created
 */
protected void enableDrop(){
  DropTarget target=new DropTarget(getDndObject(),DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_DEFAULT);
  target.setTransfer(new Transfer[]{SwtDndTypeTransfer.getInstance()});
  target.addDropListener(new DropTargetListener(){
    public void dragEnter(    DropTargetEvent arg0){
      arg0.detail=arg0.operations;
    }
    public void dragLeave(    DropTargetEvent arg0){
    }
    public void dragOperationChanged(    DropTargetEvent arg0){
    }
    public void dragOver(    DropTargetEvent event){
      onSwtDragOver(event);
    }
    public void drop(    DropTargetEvent nativeEvent){
      DropEvent event=new DropEvent();
      DataTransfer dataTransfer=new DataTransfer();
      XulSwtDndType types[]=(XulSwtDndType[])nativeEvent.data;
      SwtElement xulDndSource=null;
      try {
        if (types != null) {
          List<Object> objs=new ArrayList<Object>();
          for (int i=0; i < types.length; i++) {
            if (i == 0) {
              xulDndSource=types[i].getXulSource();
            }
            objs.add(types[i].getValue());
          }
          dataTransfer.setData(objs);
          dataTransfer.setDropEffect(lookupXulEffect(nativeEvent.detail));
        }
 else {
          nativeEvent.detail=DND.DROP_NONE;
          return;
        }
      }
 catch (      Exception e) {
        e.printStackTrace();
      }
      event.setDataTransfer(dataTransfer);
      event.setAccepted(true);
      event.setNativeEvent(nativeEvent);
      resolveDndParentAndIndex(event);
      final String method=getOndrop();
      if (method != null) {
        try {
          Document doc=getDocument();
          XulRoot window=(XulRoot)doc.getRootElement();
          final XulDomContainer con=window.getXulDomContainer();
          con.invoke(method,new Object[]{event});
        }
 catch (        XulException e) {
          logger.error("String_Node_Str" + method,e);
        }
      }
      if (!event.isAccepted()) {
        nativeEvent.detail=DND.DROP_NONE;
        return;
      }
      if (xulDndSource == null) {
        throw new RuntimeException("String_Node_Str");
      }
      xulDndSource.onSwtDragFinished(lookupXulEffect(nativeEvent.detail),event);
      onSwtDragDropAccepted(event);
    }
    public void dropAccept(    DropTargetEvent arg0){
    }
  }
);
}