def to_dict(self, *attributes, **options):
        """ Returns a **flatten** :class:`ordered dictionary <collections.OrderedDict>`
        of ``{'field path': attribute}`` or ``{'field path': tuple(attributes)}``
        pairs 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 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__)
        # Save to file
        save = options.pop('save', False)

        fields = OrderedDict()
        fields[name] = OrderedDict()
        if attributes:
            field_getter = attrgetter(*attributes)
        else:
            field_getter = attrgetter('value')
        for item in self.field_items(**options):
            field_path, field = item
            if save and field_path.startswith('['):
                # Sequence element
                field_path = '_' + field_path
            fields[name][field_path] = field_getter(field)
        return fields