De-serializes the `Pointer` field from the byte *buffer* starting
        at the begin of the *buffer* or with the given *index* by mapping the
        bytes to the :attr:`value` of the `Pointer` field in accordance with
        the decoding *byte order* for the de-serialization and the decoding
        :attr:`byte_order` of the `Pointer` field.

        The specific decoding :attr:`byte_order` of the `Pointer` field
        overrules the decoding *byte order* for the de-serialization.

        Returns the :class:`Index` of the *buffer* after the `Pointer` field.

        Optional the de-serialization of the referenced :attr:`data` object of
        the `Pointer` field can be enabled.

        :param bytes buffer: byte stream.
        :param Index index: current read :class:`Index` within the *buffer*.
        :keyword byte_order: decoding byte order for the de-serialization.
        :type byte_order: :class:`Byteorder`, :class:`str`
        :keyword bool nested: if ``True`` a `Pointer` field de-serialize its
            referenced :attr:`data` object as well (chained method call).
            Each :class:`Pointer` field uses for the de-serialization of its
            referenced :attr:`data` object its own :attr:`bytestream`.

def deserialize(self, buffer=bytes(), index=Index(), **options):
        """ De-serializes the `Pointer` field from the byte *buffer* starting
        at the begin of the *buffer* or with the given *index* by mapping the
        bytes to the :attr:`value` of the `Pointer` field in accordance with
        the decoding *byte order* for the de-serialization and the decoding
        :attr:`byte_order` of the `Pointer` field.

        The specific decoding :attr:`byte_order` of the `Pointer` field
        overrules the decoding *byte order* for the de-serialization.

        Returns the :class:`Index` of the *buffer* after the `Pointer` field.

        Optional the de-serialization of the referenced :attr:`data` object of
        the `Pointer` field can be enabled.

        :param bytes buffer: byte stream.
        :param Index index: current read :class:`Index` within the *buffer*.
        :keyword byte_order: decoding byte order for the de-serialization.
        :type byte_order: :class:`Byteorder`, :class:`str`
        :keyword bool nested: if ``True`` a `Pointer` field de-serialize its
            referenced :attr:`data` object as well (chained method call).
            Each :class:`Pointer` field uses for the de-serialization of its
            referenced :attr:`data` object its own :attr:`bytestream`.
        """
        # Field
        index = super().deserialize(buffer, index, **options)
        # Data Object
        if self._data and get_nested(options):
            options[Option.byte_order.value] = self.data_byte_order
            self._data.deserialize(self._data_stream,
                                   Index(0, 0,
                                         self.address, self.base_address,
                                         False),
                                   **options)
        return index