code: def iterative_overlap_assembly(
          variant_sequences,
          min_overlap_size=MIN_VARIANT_SEQUENCE_ASSEMBLY_OVERLAP_SIZE):
      if len(variant_sequences) <= 1:
          return variant_sequences
      n_before_collapse = len(variant_sequences)
      variant_sequences = collapse_substrings(variant_sequences)
      n_after_collapse = len(variant_sequences)
      logger.info(
          "Collapsed %d -> %d sequences",
          n_before_collapse,
          n_after_collapse)
      merged_variant_sequences = greedy_merge(variant_sequences, min_overlap_size)
      return list(sorted(
          merged_variant_sequences,
          key=lambda seq: -len(seq.reads)))