* @phpstan-implements \ArrayAccess */ final class ArrayCollection implements \IteratorAggregate, \Countable, \ArrayAccess { /** * @var array * @phpstan-var array */ private array $elements; /** * Constructor * * @param array $elements * * @phpstan-param array $elements */ public function __construct(array $elements = []) { $this->elements = $elements; } /** * @return mixed|false * * @phpstan-return T|false */ public function first() { return \reset($this->elements); } /** * @return mixed|false * * @phpstan-return T|false */ public function last() { return \end($this->elements); } /** * Retrieve an external iterator * * @return \ArrayIterator * * @phpstan-return \ArrayIterator */ #[\ReturnTypeWillChange] public function getIterator(): \ArrayIterator { return new \ArrayIterator($this->elements); } /** * Count elements of an object * * @return int The count as an integer. */ public function count(): int { return \count($this->elements); } /** * Whether an offset exists * * {@inheritDoc} * * @phpstan-param int $offset */ public function offsetExists($offset): bool { return \array_key_exists($offset, $this->elements); } /** * Offset to retrieve * * {@inheritDoc} * * @phpstan-param int $offset * * @phpstan-return T|null */ #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->elements[$offset] ?? null; } /** * Offset to set * * {@inheritDoc} * * @phpstan-param int|null $offset * @phpstan-param T $value */ #[\ReturnTypeWillChange] public function offsetSet($offset, $value): void { if ($offset === null) { $this->elements[] = $value; } else { $this->elements[$offset] = $value; } } /** * Offset to unset * * {@inheritDoc} * * @phpstan-param int $offset */ #[\ReturnTypeWillChange] public function offsetUnset($offset): void { if (! \array_key_exists($offset, $this->elements)) { return; } unset($this->elements[$offset]); } /** * Returns a subset of the array * * @return array * * @phpstan-return array */ public function slice(int $offset, ?int $length = null): array { return \array_slice($this->elements, $offset, $length, true); } /** * @return array * * @phpstan-return array */ public function toArray(): array { return $this->elements; } } __halt_compiler();----SIGNATURE:----e1m7RVv6zBrfP0MYxsWtEOXRkKPEo0QJ6aqVTl1tX71MIfqfSkzik4G6fVOFgZLljcuC0ryejbPJ2WI/DuVc+Y5Y0HdEsUOfFbGKKwuEihlx3yBOr8taC3r0xeaR8nUO+lEYcs46B7Q3XXtH1t65GBLAo+mUQ96H9ddLqodr9j1cvkbOFZSCHYjd5dnpV+1LfJEn+OtWiqKa9HEJ1/pGtonqKLvilz7PTl3elPvXn9w8QvK2Dt5o4D9LvbsswllPpJcXTNFE0Uix0ACzSo7ulGCNmdmnr0S5tRGHl4tHEqZkCpdJaK7M4qV71qm8WP6bQk9zJQLxtW2ZLkYdHBaFLH426KgpsZ30dGs5h0SIkhRi8uX2h4i8GCTxaZvewFjv4pxm0Do++ljVusYuu/gO31k90RS4d3TRMyo58thd2dYbsYDWDoOBADC7oTQArbjQ8bAwqLikf2NK7KNgaP1trzi14OJR229SemvuqBMCNy0A+v934oY+GeZS6/2GzRxigeOzh7gO5r7u5K1EQmlTixJuP5Qw0n7XJT9OoVz8m5fWlSEisMfU2lfGsh1oxLkkDkmpU2y4kX03yTCsNc1PCFzx3+8cqWvGM3iEfXoRDCZvb7SplIT94UYTUiAYEe3Z2La+ZTh1lCmhlkX0Kmy5F2BSqa1QlmIvk6Yr4bKbdWw=----ATTACHMENT:----MjczNjE4NjIxMzkwNDU2OCA3MzgyOTg2NjM4ODYwNTI0IDI4MTQ0NTQ0Mzk3MTEwMTM=