code: function (container, property, listenerToExclude, throwError) {
                  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;
                  }
                  if (container.hasOwnProperty(property)) {
                      var oldVal = container[property];
                      delete container[property];
  
                      // 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);
                      }
  
                      __notifyListeners(container, property, {
                          change : this.KEY_REMOVED,
                          oldValue : oldVal
                      }, listenerToExclude);
                  }
              }
docs: Delete a key in Json object (<code>delete container[property]</code>) and make sure all JSON
  listeners are called.
  @param {Object} container reference to the data holder object - e.g. data.search.preferedCity
  @param {String} property name of the key to delete - e.g. '$value'
  @param {Object} listenerToExclude (optional) potential listener callback belonging to the object that
  raised the change and which doesn't want to be notified
  @param {Boolean} throwError default is false