code: def index_fields(self, index=Index(), **options):
          
          index = self.index_field(index)
  
          # Container
          if is_container(self._data):
              self._data.index_fields(Index(0, 0,
                                            self.address, self.base_address,
                                            False),
                                      **options)
          # Pointer
          elif is_pointer(self._data) and get_nested(options):
              self._data.index_fields(Index(0, 0,
                                            self.address, self.base_address,
                                            False),
                                      **options)
          # Field
          elif is_field(self._data):
              self._data.index_field(Index(0, 0,
                                           self.address, self.base_address,
                                           False))
          return index
docs: Indexes the `Pointer` field and the :attr:`data` object referenced
          by the `Pointer` field starting with the given *index* and returns the
          :class:`Index` after the `Pointer` field.
  
          :param Index index: :class:`Index` for the `Pointer` field.
          :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
              :attr:`data` object referenced by the `Pointer` field indexes their
              referenced :attr:`~Pointer.data` object fields as well
              (chained method call).