Tree: (Dnd, ObjectStoreModel) dropping node onto its parent causes it to become invisible

Description

This issue only occurs when using the new ObjectStoreModel? and Memory store. If you drag an item into its current parent it disappears. This is especially a problem if you have a betweenThreshold that allows the re-ordering of items within the same parent. This issue can be reproduced using the dijit Dnd Tree 1.8 example here:

Change History (11)

dijit/Tree: (Dnd, ObjectStoreModel) Dragging a node within the same parent causes it to become invisible →
Tree: (Dnd, ObjectStoreModel) Dragging a node within the same parent causes it to become invisible

The problem is simple: around line 467 in dijit/tree/dndSource it says

// Expand the target node (if it's currently collapsed) so the user can see
// where their node was dropped. In particular since that node is still selected.
this.tree._expandNode(target);

But around line 198 in dijit/tree/ObjectStoreModel it says

if(!bCopy){
// In order for DnD moves to work correctly, childItem needs to be orphaned from oldParentItem
// before being adopted by newParentItem. That way, the TreeNode is moved rather than
// an additional TreeNode being created, and the old TreeNode subsequently being deleted.
// The latter loses information such as selection and opened/closed children TreeNodes.
// Unfortunately simply calling this.store.put() will send notifications in a random order, based
// on when the TreeNodes in question originally appeared, and not based on the drag-from
// TreeNode vs. the drop-onto TreeNode.
var oldParentChildren = [].concat(this.childrenCache[this.getIdentity(oldParentItem)]), // concat to make copy
index = array.indexOf(oldParentChildren, childItem);
oldParentChildren.splice(index, 1);
this.onChildrenChange(oldParentItem, oldParentChildren);
}

This is plain wrong, because if the child treeNodes are orphaned, they can never be expanded.
If the target is going to be removed first, shouldn't there be a _loadDeferred on that treeNode?