public void MoveToTree(Wrap what, Wrap anchor, MoveDestination dst) { var resp = GetWhereAndBeforeOf(what, anchor, dst); Wrap where = resp.Item1; Wrap beforeOf = resp.Item2; if (where == null) { return; } if (!CheckMoveConsistancy(what, where)) { return; } if (what.Parent != null) { Remove(what); } if (UnassignedVideos.Contains(what)) { UnassignedVideos.Remove(what as VideoWrap); } Insert(what, where, beforeOf); }