code: def create_tags_with_concatenated_css_classes(tags):
      
      current_classes = set()
      result = []
      for pos, group in group_tags_at_same_position(tags):
          opening, closing = get_opening_closing_tags(group)
          # handle closing tags at current position
          closing_added = False
          if len(closing) > 0:
              closing_tag = Tag(pos, False, '')
              for tag in closing:
                  current_classes.remove(tag.css_class)
              result.append(closing_tag)
              closing_added = True
          # handle opening tags at current position
          opening_added = False
          if len(opening) > 0:
              # handle the begin of an overlap
              if not closing_added and len(current_classes) > 0:
                  result.append(Tag(pos, False, ''))
              for tag in opening:
                  current_classes.add(tag.css_class)
              opening_tag = Tag(pos, True, ' '.join(sorted(current_classes)))
              result.append(opening_tag)
              opening_added = True
          # handle the end of an overlap
          if closing_added and not opening_added and len(current_classes) > 0:
              opening_tag = Tag(pos, True, ' '.join(sorted(current_classes)))
              result.append(opening_tag)
      return result
docs: Function that creates <mark> tags such that they are not overlapping.
      In order to do this, it concatenates the css classes and stores the concatenated
      result in new tags.