private BridgeUpdater GetBridgeUpdater(JsArray array)
        {
            switch (_Change.Action)
            {
            case NotifyCollectionChangedAction.Add:
                _NewJsValue = _JsUpdateHelper.Map(_Change.NewItems[0]);
                if (_NewJsValue == null)
                {
                    return(null);
                }
                return(array.GetAddUpdater(_NewJsValue, _Change.NewStartingIndex));

            case NotifyCollectionChangedAction.Replace:
                _NewJsValue = _JsUpdateHelper.Map(_Change.NewItems[0]);
                if (_NewJsValue == null)
                {
                    return(null);
                }
                return(array.GetReplaceUpdater(_NewJsValue, _Change.NewStartingIndex));

            case NotifyCollectionChangedAction.Remove:
                return(array.GetRemoveUpdater(_Change.OldStartingIndex));

            case NotifyCollectionChangedAction.Reset:
                return(array.GetResetUpdater());;

            case NotifyCollectionChangedAction.Move:
                return(array.GetMoveUpdater(_Change.OldStartingIndex, _Change.NewStartingIndex));

            default:
                return(null);
            }
        }
        private Tuple <BridgeUpdater, List <IJsCsGlue> > GetBridgeUpdater(JsArray array)
        {
            switch (_Change.Action)
            {
            case NotifyCollectionChangedAction.Add:
                return(GetUpdater(array.GetAddUpdater, array.GetAddUpdater));

            case NotifyCollectionChangedAction.Replace:
                return(GetUpdater(array.GetReplaceUpdater, array.GetReplaceUpdater));

            case NotifyCollectionChangedAction.Remove:
                return(FromBridge(array.GetRemoveUpdater(_Change.OldStartingIndex, _Change.OldItems.Count)));

            case NotifyCollectionChangedAction.Reset:
                return(FromBridge(array.GetResetUpdater()));

            case NotifyCollectionChangedAction.Move:
                return(FromBridge(array.GetMoveUpdater(_Change.OldStartingIndex, _Change.NewStartingIndex)));

            default:
                return(null);
            }
        }