function regenerateTreeForNewDecorator(content, blockMap, previousTreeMap, decorator, existingDecorator) {
	  return previousTreeMap.merge(blockMap.toSeq().filter(function (block) {
	    return decorator.getDecorations(block, content) !== existingDecorator.getDecorations(block, content);
	  }).map(function (block) {
	    return BlockTree.generate(content, block, decorator);
	  }));
	}
Generate tree map objects for a new decorator object, preserving any
decorations that are unchanged from the previous decorator.

Note that in order for this to perform optimally, decoration Lists for
decorators should be preserved when possible to allow for direct immutable
List comparison.