This is fixed without any effort in our Text::Properties structure:

  o  A ctp can be an empty string.
  o  An stp is an array of ctps.

They're ordered by definition, even if they're of zero length.

Another oddity is that one of our "ctp"s can itself
be a string.  We're not forced to just stash one
character in each.  That might be useful as an
efficiency hack when you want a series of adjacent
characters to have the same property settings (a very
common case, really).

But also...