docs: def groupby(self, key_fn):
          """
          Parameters
          ----------
          key_fn : function
              Takes an effect or variant, returns a grouping key.
          """
          result_dict = defaultdict(list)
  
          for x in self:
              result_dict[key_fn(x)].append(x)
  
          # convert result lists into same Collection type as this one
          return {
              k: self.clone_with_new_elements(elements)
              for (k, elements)
              in result_dict.items()
          }