code: def decrypt_and_hash(self, ciphertext: bytes) -> bytes:
          
          plaintext = self.cipher_state.decrypt_with_ad(self.h, ciphertext)
          self.mix_hash(ciphertext)
          return plaintext
docs: Sets plaintext = DecryptWithAd(h, ciphertext), calls MixHash(ciphertext), and returns plaintext. Note that if
          k is empty, the DecryptWithAd() call will set plaintext equal to ciphertext.
  
          :param ciphertext: bytes sequence
          :return: plaintext bytes sequence