De-serializes the :attr:`data` object referenced by the `Pointer`
        field from the byte *buffer* by mapping the bytes to the
        :attr:`~Field.value` for each :class:`Field` in the :attr:`data` object
        in accordance with the decoding *byte order* for the de-serialization
        and the decoding :attr:`byte_order` of each :class:`Field` in the
        :attr:`data` object.

        A specific decoding :attr:`byte_order` of a :class:`Field` in
        the :attr:`data` object overrules the decoding *byte order* for the
        de-serialization.

        Returns the :class:`Index` of the *buffer* after the last de-serialized
        :class:`Field` in the :attr:`data` object.

        :param bytes buffer: byte stream. Default is the internal
            :attr:`bytestream` of the `Pointer` field.
        :keyword byte_order: decoding byte order for the de-serialization.
            Default is the :attr:`data_byte_order` of the `Pointer` field.
        :type byte_order: :class:`Byteorder`, :class:`str`

def deserialize_data(self, buffer=bytes(), byte_order=None):
        """ De-serializes the :attr:`data` object referenced by the `Pointer`
        field from the byte *buffer* by mapping the bytes to the
        :attr:`~Field.value` for each :class:`Field` in the :attr:`data` object
        in accordance with the decoding *byte order* for the de-serialization
        and the decoding :attr:`byte_order` of each :class:`Field` in the
        :attr:`data` object.

        A specific decoding :attr:`byte_order` of a :class:`Field` in
        the :attr:`data` object overrules the decoding *byte order* for the
        de-serialization.

        Returns the :class:`Index` of the *buffer* after the last de-serialized
        :class:`Field` in the :attr:`data` object.

        :param bytes buffer: byte stream. Default is the internal
            :attr:`bytestream` of the `Pointer` field.
        :keyword byte_order: decoding byte order for the de-serialization.
            Default is the :attr:`data_byte_order` of the `Pointer` field.
        :type byte_order: :class:`Byteorder`, :class:`str`
        """
        index = Index(0, 0, self.address, self.base_address, False)
        if self._data:
            if byte_order not in ('little', 'big', Byteorder.little, Byteorder.big):
                byte_order = self.data_byte_order
            index = self._data.deserialize(buffer or self._data_stream,
                                           index,
                                           nested=False,
                                           byte_order=byte_order)
        return index