docs: def field_items(self, path=str(), **options):
          """ Returns a **flatten** list of ``('field path', field item)`` tuples
          for each :class:`Field` *nested* in the `Structure`.
  
          :param str path: field path of the `Structure`.
          :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
              :attr:`~Pointer.data` objects of all :class:`Pointer` fields in
              the `Structure` list their referenced :attr:`~Pointer.data` object
              field items as well (chained method call).
          """
          parent = path if path else str()
  
          items = list()
          for name, item in self.items():
              item_path = '{0}.{1}'.format(parent, name) if parent else name
              # Container
              if is_container(item):
                  for field in item.field_items(item_path, **options):
                      items.append(field)
              # Pointer
              elif is_pointer(item) and get_nested(options):
                  for field in item.field_items(item_path, **options):
                      items.append(field)
              # Field
              elif is_field(item):
                  items.append((item_path, item))
              else:
                  raise MemberTypeError(self, item, item_path)
          return items