Program: 122110
Project: 122110
Buggy source:
/** 
 * Accept Text and StyledText control.
 * @param labelText
 */
public void addDragAndDropTarget(final Control textControl){
  DropTargetListener dropTargetListener=new DropTargetListener(){
    String propertyName=null;
    public void dragEnter(    final DropTargetEvent event){
    }
    public void dragLeave(    final DropTargetEvent event){
    }
    public void dragOperationChanged(    final DropTargetEvent event){
    }
    public void dragOver(    final DropTargetEvent event){
      if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
        propertyName=getParameterName(textControl);
        for (int i=0; i < elem.getElementParameters().size(); i++) {
          IElementParameter param=elem.getElementParameters().get(i);
          if (param.getName().equals(propertyName)) {
            if (param.isReadOnly()) {
              event.detail=DND.ERROR_INVALID_DATA;
            }
          }
        }
      }
    }
    public void drop(    final DropTargetEvent event){
      if (propertyName != null) {
        String text;
        if (textControl instanceof StyledText) {
          text=((StyledText)textControl).getText() + (String)event.data;
          ((StyledText)textControl).setText(text);
        }
 else {
          text=((Text)textControl).getText() + (String)event.data;
          ((Text)textControl).setText(text);
        }
        Command cmd=new PropertyChangeCommand(elem,propertyName,text);
        executeCommand(cmd);
      }
    }
    public void dropAccept(    final DropTargetEvent event){
    }
  }
;
  DropTarget target=new DropTarget(textControl,DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT);
  Transfer[] transfers=new Transfer[]{TextTransfer.getInstance()};
  target.setTransfer(transfers);
  target.addDropListener(dropTargetListener);
}

Fixed version (ground truth):
/** 
 * Accept Text and StyledText control.
 * @param labelText
 */
public void addDragAndDropTarget(final Control textControl){
  DropTargetListener dropTargetListener=new DropTargetListener(){
    String propertyName=null;
    @Override public void dragEnter(    final DropTargetEvent event){
    }
    @Override public void dragLeave(    final DropTargetEvent event){
    }
    @Override public void dragOperationChanged(    final DropTargetEvent event){
    }
    @Override public void dragOver(    final DropTargetEvent event){
      if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
        propertyName=getParameterName(textControl);
        for (int i=0; i < elem.getElementParameters().size(); i++) {
          IElementParameter param=elem.getElementParameters().get(i);
          if (param.getName().equals(propertyName)) {
            if (param.isReadOnly()) {
              event.detail=DND.ERROR_INVALID_DATA;
            }
          }
        }
      }
    }
    @Override public void drop(    final DropTargetEvent event){
      if (propertyName != null) {
        String text;
        if (textControl instanceof StyledText) {
          text=((StyledText)textControl).getText() + (String)event.data;
          ((StyledText)textControl).setText(text);
        }
 else {
          text=((Text)textControl).getText() + (String)event.data;
          ((Text)textControl).setText(text);
        }
        Command cmd=new PropertyChangeCommand(elem,propertyName,text);
        executeCommand(cmd);
      }
    }
    @Override public void dropAccept(    final DropTargetEvent event){
    }
  }
;
  DropTarget target=new DropTarget(textControl,DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT);
  Transfer[] transfers=new Transfer[]{TextTransfer.getInstance()};
  target.setTransfer(transfers);
  target.addDropListener(dropTargetListener);
}