docs: function (container, property, val, listenerToExclude, throwError) {
                  // check for interface
                  if (!__isValidContainer(container)) {
                      if (throwError) {
                          throw {
                              code : this.NOT_OF_SPECIFIED_DH_TYPE
                          };
                      } else {
                          this.$logError(this.NOT_OF_SPECIFIED_DH_TYPE, null, container);
                      }
                      return;
                  }
  
                  var exists = container.hasOwnProperty(property);
                  var oldVal = container[property];
                  container[property] = val;
  
                  // do nothing if the value did not change or was not created:
                  if (oldVal !== val || !exists) {
                      // If the "aria:parent" meta-data is not present, we do not add or remove back-references
                      // to this object. This is only needed when manipulating listeners.
                      if (container[parProp] && __includePropForBackRef(property)) {
                          // if present, remove the reference to the parent from the parent description list of the old
                          // value
                          __removeLinkToParent(oldVal, container, property);
  
                          // if the new child is a container, add the reference back to container in the child after
                          // checking the child has back-references in its sub-tree
                          this.__addLinkToParent(val, container, property);
                      }
  
                      __notifyListeners(container, property, {
                          change : exists ? this.VALUE_CHANGED : this.KEY_ADDED,
                          newValue : val,
                          oldValue : oldVal
                      }, listenerToExclude);
                  }
                  return val;
              }