code: def deserialize_data(self, buffer=bytes(), byte_order=None):
          
          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
docs: 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`