Destructor.
When destructing, $stack must have been already emptied.
public function __destruct() { assert($this->stack === [], "Transaction \$stack was not empty. Active stack: " . $this->dumpStackItemsAsString()); }