Return a new PileupCollection that is the union of self and the other
        specified collections.

def merge(self, *others):
        '''
        Return a new PileupCollection that is the union of self and the other
        specified collections.
        '''
        new_pileups = {}
        for collection in (self,) + others:
            for (locus, pileup) in collection.pileups.items():
                if locus in new_pileups:
                    new_pileups[locus].update(pileup)
                else:
                    new_pileups[locus] = Pileup(locus, pileup.elements)
        return PileupCollection(new_pileups, parent=self)