protected override IScriptCommand executeInner(ParameterDic pm, ItemsControl ic,
                                                       RoutedEventArgs evnt, IUIInput input, IList <IUIInputProcessor> inpProcs)
        {
            Point         posRelToScp    = pm.GetValue <Point>(CurrentRelativePositionKey);
            var           startSelected  = UIEventHubProperties.GetStartSelectedItem(ic);
            List <object> selectedList   = new List <object>();
            List <int>    selectedIdList = new List <int>();
            var           scp            = ControlUtils.GetScrollContentPresenter(ic);

            var currentSelected = UITools.GetSelectedListBoxItem(scp, posRelToScp);

            if (startSelected != null && currentSelected != null)
            {
                int startIdx = ic.ItemContainerGenerator.IndexFromContainer(startSelected);
                int endIdx   = ic.ItemContainerGenerator.IndexFromContainer(currentSelected);

                for (int i = Math.Min(startIdx, endIdx); i <= Math.Max(startIdx, endIdx); i++)
                {
                    selectedList.Add(ic.Items[i]);
                    selectedIdList.Add(i);
                }
            }

            //UpdateStartSelectedItems, or clear it if no longer selecting.
            if (UIEventHubProperties.GetIsSelecting(ic))
            {
                if (UIEventHubProperties.GetStartSelectedItem(ic) == null)
                {
                    var itemUnderMouse = UITools.GetSelectedListBoxItem(scp, posRelToScp);
                    UIEventHubProperties.SetStartSelectedItem(ic, itemUnderMouse);
                }
            }
            else
            {
                UIEventHubProperties.SetStartSelectedItem(ic, null);
            }

            if (UIEventHubProperties.GetIsSelecting(ic))
            {
                if (UIEventHubProperties.GetStartSelectedItem(ic) == null)
                {
                    UITools.SetItemUnderMouseToAttachedProperty(ic, posRelToScp,
                                                                UIEventHubProperties.StartSelectedItemProperty);
                }
            }

            pm.SetValue(SelectedListKey, selectedList);
            pm.SetValue(SelectedIdListKey, selectedIdList);
            logger.Debug(String.Format("Selected = {0}", selectedIdList.Count()));
            return(NextCommand);
        }