code: function(root,array,old,caret) {
  	var newLen = array.taglen;
  	var prevLen = array.domlen || 0;
  	var last = newLen ? array[newLen - 1] : null;
  	// console.log "reconcile optimized array(!)",caret,newLen,prevLen,array
  	
  	if (prevLen > newLen) {
  		while (prevLen > newLen){
  			var item = array[--prevLen];
  			root.removeChild(item._slot_);
  		};
  	} else if (newLen > prevLen) {
  		// find the item to insert before
  		var prevLast = prevLen ? array[prevLen - 1]._slot_ : caret;
  		var before = prevLast ? prevLast.nextSibling : root._dom.firstChild;
  		
  		while (prevLen < newLen){
  			var node = array[prevLen++];
  			before ? root.insertBefore(node._slot_,before) : root.appendChild(node._slot_);
  		};
  	};
  	
  	array.domlen = newLen;
  	return last ? last._slot_ : caret;
  }
docs: expects a flat non-sparse array of nodes in both new and old, always