code: def join(self, *colrs, **colorkwargs):
          
          flat = []
          for clr in colrs:
              if isinstance(clr, (list, tuple, GeneratorType)):
                  # Flatten any lists, at least once.
                  flat.extend(str(c) for c in clr)
              else:
                  flat.append(str(clr))
  
          if colorkwargs:
              fore = colorkwargs.get('fore', None)
              back = colorkwargs.get('back', None)
              style = colorkwargs.get('style', None)
              flat = (
                  self.color(s, fore=fore, back=back, style=style)
                  for s in flat
              )
          return self.__class__(self.data.join(flat))
docs: Like str.join, except it returns a Colr.
              Arguments:
                  colrs  : One or more Colrs. If a list or tuple is passed as an
                           argument it will be flattened.
              Keyword Arguments:
                  fore, back, style...
                  see color().