For overflow ids to work properly, we need to be able to determine, from a sequence of transformations, those fresh ids that might be used when replaying the sequence. To allow this, Transformation should have a virtual method, GetFreshIds(), that every implementing class should use to specify which fresh ids each transformation uses.