Returns a **flatten** list of ``('field path', field item)`` tuples
        for each :class:`Field` *nested* in the `Sequence`.

        :param str path: field path of the `Sequence`.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            :attr:`~Pointer.data` objects of all :class:`Pointer` fields in
            the `Sequence` list their referenced :attr:`~Pointer.data` object
            field items as well (chained method call).

def field_items(self, path=str(), **options):
        """ Returns a **flatten** list of ``('field path', field item)`` tuples
        for each :class:`Field` *nested* in the `Sequence`.

        :param str path: field path of the `Sequence`.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            :attr:`~Pointer.data` objects of all :class:`Pointer` fields in
            the `Sequence` list their referenced :attr:`~Pointer.data` object
            field items as well (chained method call).
        """
        items = list()
        for index, item in enumerate(self):
            if path:
                item_path = "{0}[{1}]".format(path, str(index))
            else:
                item_path = "[{0}]".format(str(index))
            # Container
            if is_container(item):
                for field_item in item.field_items(item_path, **options):
                    items.append(field_item)
            # Pointer
            elif is_pointer(item) and get_nested(options):
                for field_item in item.field_items(item_path, **options):
                    items.append(field_item)
            # Field
            elif is_field(item):
                items.append((item_path, item))
            else:
                raise MemberTypeError(self, item, item_path)
        return items