Returns a **flatten** list of ``('field path', attribute)`` or
        ``('field path', tuple(attributes))`` tuples for each :class:`Field`
        *nested* in the `Container`.

        :param str attributes: selected :class:`Field` attributes.
            Fallback is the field :attr:`~Field.value`.
        :keyword str name: name of the `Container`.
            Default is the class name of the instance.
        :keyword bool chain: if ``True`` the field *attributes* are chained to its
            field path. Defaults to ``False``.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            `Container` lists their referenced :attr:`~Pointer.data` object
            field attributes as well (chained method call).

def to_list(self, *attributes, **options):
        """ Returns a **flatten** list of ``('field path', attribute)`` or
        ``('field path', tuple(attributes))`` tuples for each :class:`Field`
        *nested* in the `Container`.

        :param str attributes: selected :class:`Field` attributes.
            Fallback is the field :attr:`~Field.value`.
        :keyword str name: name of the `Container`.
            Default is the class name of the instance.
        :keyword bool chain: if ``True`` the field *attributes* are chained to its
            field path. Defaults to ``False``.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            `Container` lists their referenced :attr:`~Pointer.data` object
            field attributes as well (chained method call).
        """

        # Name of the Container
        name = options.pop('name', self.__class__.__name__)

        fields = list()
        if attributes:
            field_getter = attrgetter(*attributes)
        else:
            field_getter = attrgetter('value')
        for item in self.field_items(**options):
            field_path, field = item
            if field_path.startswith('['):
                # Sequence
                field_path = '{0}{1}'.format(name, field_path)
            else:
                field_path = '{0}.{1}'.format(name, field_path)
            if options.get('chain', False) and len(attributes) > 1:
                fields.append((field_path, *field_getter(field)))
            else:
                fields.append((field_path, field_getter(field)))
        return fields