This is not very efficient today.
We should try to improve the default one and not rely so much upon bulk merges. At the least we can use a specialized visitor, save some cpu, and avoid creating so much garbage.
Another pain point in default merge is all the string creation and unicode encode/decoding back and forth. I don't tackle that here... but that would be fantastic to fix in another issue.