code: def sequence(self, other, exclude_list_fields=None):
      
      exclude_list_fields = frozenset(exclude_list_fields or [])
      overwrite_kwargs = {}
  
      nonexistent_excluded_fields = exclude_list_fields - self._list_fields
      if nonexistent_excluded_fields:
        raise self.AlgebraicDataError(
          "Fields {} to exclude from a sequence() were not found in this object's list fields: {}. "
          "This object is {}, the other object is {}."
          .format(nonexistent_excluded_fields, self._list_fields, self, other))
  
      shared_list_fields = (self._list_fields
                            & other._list_fields
                            - exclude_list_fields)
      if not shared_list_fields:
        raise self.AlgebraicDataError(
          "Objects to sequence have no shared fields after excluding {}. "
          "This object is {}, with list fields: {}. "
          "The other object is {}, with list fields: {}."
          .format(exclude_list_fields, self, self._list_fields, other, other._list_fields))
  
      for list_field_name in shared_list_fields:
        lhs_value = getattr(self, list_field_name)
        rhs_value = getattr(other, list_field_name)
        overwrite_kwargs[list_field_name] = lhs_value + rhs_value
  
      return self.copy(**overwrite_kwargs)
docs: Return a copy of this object which combines all the fields common to both `self` and `other`.
  
      List fields will be concatenated.
  
      The return type of this method is the type of `self` (or whatever `.copy()` returns), but the
      `other` argument can be any `_ExtensibleAlgebraic` instance.