docs: function (bind, callback) {
                  var jsonChangeCallback = null;
                  // register as listener for the bindings defined for this control:
                  if (bind) {
                      jsonChangeCallback = {
                          fn : callback || this._notifyDataChange,
                          scope : this,
                          args : {
                              tplCtxt : this.tplCtxt,
                              animate : bind.animate
                          }
                      };
  
                      // addListener throws errors
                      try {
                          // normalize recursive
                          bind.recursive = bind.recursive !== false;
                          this.__json.addListener(bind.inside, bind.to, jsonChangeCallback, true, bind.recursive);
                          // save for disposal
                          this._bindings.push({
                              inside : bind.inside,
                              callback : jsonChangeCallback,
                              to : bind.to,
                              recursive : bind.recursive
                          });
                      } catch (e) {
                          this.$logError(this.SECTION_BINDING_ERROR, [bind.inside, bind.to, this.id,
                                  this.tplCtxt.tplClasspath]);
                          jsonChangeCallback = null;
                      }
                      return jsonChangeCallback;
                  }
              }