code: function(patchList) {
  		var dfd, i, p2, key, patch, node,
  			patchCount = patchList.length,
  			deferredList = [];
  
  		for(i=0; i<patchCount; i++){
  			p2 = patchList[i];
  			_assert(p2.length === 2, "patchList must be an array of length-2-arrays");
  			key = p2[0];
  			patch = p2[1];
  			node = (key === null) ? this.rootNode : this.getNodeByKey(key);
  			if(node){
  				dfd = new $.Deferred();
  				deferredList.push(dfd);
  				node.applyPatch(patch).always(_makeResolveFunc(dfd, node));
  			}else{
  				this.warn("could not find node with key '" + key + "'");
  			}
  		}
  		// Return a promise that is resovled, when ALL patches were applied
  		return $.when.apply($, deferredList).promise();
  	}
docs: (experimental)
  
  @param {Array} patchList array of [key, NodePatch] arrays
  @returns {$.Promise} resolved, when all patches have been applied
  @see TreePatch