*/ class ActionsCleanersStack implements Countable, Iterator { /** @var array $stack The stack */ private array $stack = []; public function exists(int $offset): bool { return isset($this->stack[$offset]); } public function get(int $offset): ?ActionDescriptor { return $this->stack[$offset] ?? null; } public function set(ActionDescriptor $value): void { $this->stack[] = $value; } public function unset(int $offset): void { unset($this->stack[$offset]); } public function rewind(): void { reset($this->stack); } public function current(): false|ActionDescriptor { return current($this->stack); } public function key(): ?int { return key($this->stack); } public function next(): void { next($this->stack); } public function valid(): bool { return key($this->stack) !== null; } public function count(): int { return count($this->stack); } }