private void BulkUpdate(IEnumerable <ArrayDescriptor> updates)
        {
            var spliter = new EntityArraySpliter {
                MaxCount = _WebView.GetMaxAcceptableArguments() - 1
            };

            var packer = new ArrayChildrenDescriptionPacker();

            foreach (var entityDescriptor in spliter.SplitParameters(updates))
            {
                var arguments = GetUpdateParameters(entityDescriptor, packer);
                BulkArraysUpdater.ExecuteFunctionNoResult(_WebView, null, arguments);
            }
        }
        private IJavascriptObject[] GetUpdateParameters(List <ArrayDescriptor> updates, ArrayChildrenDescriptionPacker packer)
        {
            var sizes = packer.Pack(updates);
            var res   = new IJavascriptObject[updates.Select(up => up.OrdenedChildren.Count + 1).Sum() + 1];

            res[0] = _WebView.Factory.CreateString(sizes);
            var count = 1;

            foreach (var father in updates)
            {
                res[count++] = father.Father.JsValue;
                foreach (var attribute in father.OrdenedChildren)
                {
                    res[count++] = attribute.JsValue;
                }
            }
            return(res);
        }