Strange behavior of Print, Do, and merged output cells

The reason this happens is described in ref/CellPrint, in the possible issues section:

Setting CellAutoOverwrite and GeneratedCell can cause unexpected results:

In[1]:= CellPrint[Cell["First", "Print", CellAutoOverwrite -> False, 
   GeneratedCell -> False]];
"Last"

Out[2]= "Last"

First

Merging the cells sets these two options:

  • it is no longer a generated cell,
  • and, theoretically if the user merged the cells, the user doesn't want them overwritten.

Tricky behavior, but I think it is within the scope of what's documented. A solution to improve the behavior would probably be appreciated, but for now it seems documented and expected.