  Streaming string transducers (SSTs) implement string-to-string
transformations by reading their input in a single left-to-right pass while
maintaining fragments of potential outputs in a finite set of string variables.
These variables get updated on transitions of the transducer where they can be
reassigned to concatenations of variables and symbols. An SST is called
\emph{copyless} if every update is such that no variable gets copied to more
than once. Copyless SSTs capture Courcelle's monadic second-order definable
graph transformations (MSOT) when restricted to string-to-string rewritings.
The extension of copyless SSTs with nondeterminism is also known to be
equivalent to the nondeterministic variant of MSOTs.
  MSOTs, both deterministic and nondeterministic, are closed under composition.
Given the equivalence of MSOT and copyless SSTs, it is easy to see that
copyless SSTs are also closed under composition. The original proofs of this
fact, however, were based on a direct construction to produce a composite
copyless SST from two given copyless SSTs. A counterexample discovered by Joost
Englefriet showed that this construction may produce copyful transducers. We
revisit the original composition constructions for both deterministic and
nondeterministic SSTs and show that, although they can introduce copyful
updates, the resulting copyful behavior they exhibit is superficial and is
characterized by a property we call "diamond-free": two copies of the variables
are never merged. To recover a modified version of the original construction,
we provide a method for producing an equivalent copyless NSST from any
diamond-free copyful NSST.
