docs: def digest(self):
          """Return final digest value.
          """
          if self._digest is None:
              if self._buf:
                  self._add_block(self._buf)
                  self._buf = EMPTY
              ctx = self._blake2s(0, 1, True)
              for t in self._thread:
                  ctx.update(t.digest())
              self._digest = ctx.digest()
          return self._digest