code: function execObjectBindingHandlerOnNode(bindingKeyAndHandler, node, getValueAccessor, allBindings, bindingContext, reportBindingError) {
        var handlerInitFn = bindingKeyAndHandler.handler["init"],
            handlerUpdateFn = bindingKeyAndHandler.handler["update"],
            bindingKey = bindingKeyAndHandler.key,
            controlsDescendantBindings = false;
  
        // Run init, ignoring any dependencies
        if (typeof handlerInitFn === "function") {
            try {
                ignore(function() {
                    var initResult = handlerInitFn(node, getValueAccessor(bindingKey), allBindings, bindingContext.$data, bindingContext);
  
                    // If this binding handler claims to control descendant bindings, make a note of this
                    if (initResult && initResult.controlsDescendantBindings) {
                        controlsDescendantBindings = true;
                    }
                });
            } catch(ex) {
                reportBindingError('init', ex);
            }
        }
  
        // Run update in its own computed wrapper
        if (typeof handlerUpdateFn === "function") {
            computed(
                function() {
                    try {
                        handlerUpdateFn(node, getValueAccessor(bindingKey), allBindings, bindingContext.$data, bindingContext);
                    } catch (ex) {
                        reportBindingError('update', ex);
                    }
                },
                null,
                { disposeWhenNodeIsRemoved: node }
            );
        }
        return controlsDescendantBindings;
    }
docs: This is called when the bindingHandler is an object (with `init` and/or `update` methods)