code: 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;
    }
docs: SpahQL#destroy([key]) -> SpahQL
  
  Deletes data from the first result in this set. If a key is supplied, the key will be deleted from value.
  If no arguments are given, the entire result will be deleted from its parent.
  
  Deletion takes different effects depending on the data type of this query result.
  Arrays are spliced, removing the specified index from the array without leaving an empty space.
  Objects/Hashes will have the specified key removed, if the key exists.
  
  The root data construct may not be deleted. This method always returns self.