docs: function(target, key) {
      if(!target || typeof(target)!="object") {
        key = target;
        target = this[0];
      }
  
      if(target && key) {
        // Key deletion
        var modified = false;
        var oldVal, newVal;
        var type = this.type(target.value);
        
        // Shallow-clone original value...
        // Original value is cloned so that new value can remain pointed to source data.
        var cKey = SpahQL.DataHelper.coerceKeyForObject(key, target.value);
        if(type == "array") {
          // Doing array splice
          oldVal = target.value.slice(0); // shallow array clone
          target.value.splice(cKey, 1);
        }
        else if(type == "object") {
          // Doing hash delete
          oldVal = {};
          // Shallow hash clone
          for(var v in target.value) oldVal[v] = target.value[v];
          delete target.value[cKey];
        }
        this.resultModified(target, oldVal);
      }
      else if(target) {
        // Self-deletion
        var k = this.keyName(target.path);
        var p = this.parent(target);
        if(p && k) {
          p.destroy(k);
        }
      }
      
      return this;
    }