All :class:`Pointer` fields in the `Structure` read the necessary
        number of bytes from the data :class:`Provider` for their referenced
        :attr:`~Pointer.data` object. Null pointer are ignored.

        :param Provider provider: data :class:`Provider`.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            :attr:`~Pointer.data` objects of all :class:`Pointer` fields in the
            `Structure` reads their referenced :attr:`~Pointer.data` object as
            well (chained method call).
            Each :class:`Pointer` field stores the bytes for its referenced
            :attr:`~Pointer.data` object in its :attr:`~Pointer.bytestream`.

def read_from(self, provider, **options):
        """ All :class:`Pointer` fields in the `Structure` read the necessary
        number of bytes from the data :class:`Provider` for their referenced
        :attr:`~Pointer.data` object. Null pointer are ignored.

        :param Provider provider: data :class:`Provider`.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            :attr:`~Pointer.data` objects of all :class:`Pointer` fields in the
            `Structure` reads their referenced :attr:`~Pointer.data` object as
            well (chained method call).
            Each :class:`Pointer` field stores the bytes for its referenced
            :attr:`~Pointer.data` object in its :attr:`~Pointer.bytestream`.
        """
        for item in self.values():
            # Container or Pointer
            if is_mixin(item):
                item.read_from(provider, **options)