When do IOLists dedupe strings into references?

when does deduplication happen for IOLists…if I create a massive IOList with a bunch of macros expanding inside of each other, will there be a final pass that deduplicates binary segments?

e.g.

1. EExFun.outter() #=> [
  "<div>", 
  EExFun.inner() #=> ["<div> some string </div>"],
  "</div>"
]
  
2. ["<div>", "<div> some string </div>", "</div>"]

3. [ref_div_open(), [ref_div_open(), "some string", ref_div_close()], ref_div_close()]