private static void MoveInGroup(ListViewItem item, int indexInGroup, List<ListViewItem> groupList, int delta, bool focus)
 {
     if (item.ListView.VirtualMode)
     {
         throw new InvalidOperationException();
     }
     ListView listView = item.ListView;
     listView.BeginUpdate();
     try
     {
         groupList.Remove(item);
         groupList.Insert(indexInGroup + delta, item);
         listView.Sort(new ListViewExtender.ListViewGroupIndexComparer(item.Group, groupList));
         if (focus)
         {
             item.Focus(true, true);
         }
     }
     finally
     {
         listView.EndUpdate();
     }
 }
 private static void Move(ListViewItem item, int delta, bool focus)
 {
     if (item.ListView.VirtualMode)
     {
         throw new InvalidOperationException();
     }
     ListView listView = item.ListView;
     listView.BeginUpdate();
     try
     {
         int index = item.Index;
         listView.Items.RemoveAt(index);
         listView.Items.Insert(index + delta, item);
         if (focus)
         {
             item.Focus(true, true);
         }
     }
     finally
     {
         listView.EndUpdate();
     }
 }