I'm starting to think it may make sense to split this into two classes since conceptually there's a "raw" trace with an unmerged list of spans and a merged/finalized trace and the monoid only operates on the former.