rem: transArray.AppendElement(trans); 
add: var count = 0; do { var trans = nsTransferable.set(transferData._XferID == "TransferData" ? transferData : transferData.dataList[count++]); transArray.AppendElement(trans.QueryInterface(Components.interfaces.nsISupports)); } while (transferData._XferID == "TransferDataSet" && count < transferData.dataList.length); 
context:   startDrag: function (aEvent, aDragDropObserver)    {      var flavourList = null;      if (aDragDropObserver.onDragStart)        {          try             {              flavourList = aDragDropObserver.onDragStart(aEvent);            }          catch (e)            {              return; // not a draggable item, bail!            }        }      if (! flavourList || flavourList.length < 1)        return;      var trans = nsTransferable.set(flavourList);      trans = trans ? trans.QueryInterface(Components.interfaces.nsISupports) : trans;      var transArray = nsJSSupportsUtils.createSupportsArray();      transArray.AppendElement(trans);            var dragServiceIID = Components.interfaces.nsIDragService;      this.mDragService.invokeDragSession(aEvent.target, transArray, null,                                           dragServiceIID.DRAGDROP_ACTION_COPY + dragServiceIID.DRAGDROP_ACTION_MOVE + dragServiceIID.DRAGDROP_ACTION_LINK);      aEvent.preventBubble();    },
meta: 10234	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/10234/910b9ea5006fff5af4d16b76be841a0594578c74/nsDragAndDrop.js/clean/xpfe/global/resources/content/nsDragAndDrop.js