docs: def view_fields(self, *attributes, **options):
          """ Returns a list with the selected field *attribute* or a list with the
          dictionaries of the selected field *attributes* for each :class:`Field`
          *nested* in the `Sequence`.
  
          The *attributes* of each :class:`Field` for containers *nested* in the
          `Sequence` are viewed as well (chained method call).
  
          :param str attributes: selected :class:`Field` attributes.
              Fallback is the field :attr:`~Field.value`.
          :keyword tuple fieldnames: sequence of dictionary keys for the selected
              field *attributes*. Defaults to ``(*attributes)``.
          :keyword bool nested: if ``True`` all :class:`Pointer` fields nested in the
              `Sequence` views their referenced :attr:`~Pointer.data` object field
              attributes as well (chained method call).
          """
          items = list()
  
          for index, item in enumerate(self):
              if is_container(item):
                  # Container
                  items.append(item.view_fields(*attributes, **options))
              elif is_pointer(item) and get_nested(options):
                  # Pointer
                  items.append(item.view_fields(*attributes, **options))
              elif is_field(item):
                  # Field
                  if attributes:
                      field_getter = attrgetter(*attributes)
                  else:
                      field_getter = attrgetter('value')
  
                  if len(attributes) > 1:
                      fieldnames = options.get('fieldnames', attributes)
                      items.append(dict(zip(fieldnames, field_getter(item))))
                  else:
                      items.append(field_getter(item))
              else:
                  raise MemberTypeError(self, item, index)
          return items