* @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:----izhsvrH4FGzbrr6tlJ83GJhind2cEcw+gWessurwdfSLY5nfQyEjduKakeiruzN8nxDVjvITjLh64kKp/X5UZDWL26IVLj2rH4+bOsrAqf90QlI3+naWV9Sq2DzA9tUq/zxQuo1MRDK4+8+tNNOgNqdt/a49VPGlxabheUnsDOkjmpup9QGd2kyJvwe61EBQZTJ1QdNqJIU/j717FXfvre960yTu7cwdjE06y+TTKymRpHVjutfUYt9Xe6SSFWk0nANN95vEZb05watzLhpypHk8Mzc7Mbn1HUKSgqfPxxa46DA6wGxkvN+4rh5YqE4uALlDaiVs7U3GkY8qtbLGqljwseS/q+Ma8I1Dri2ZLKgsk5aMAhoGO+XdE+Jq2zDALkMQt/egtjwAhqkBvjZ1WqDKL2WtTiwUBcQdVeb1eFp9bJ98Fqd5YqSzQ0Ju8LfT91aABBI/zVZR93M1itd5aTgFNl0ei+fnVTikhx29+uNRammQUrH/9UQNQWs7sg6CYslbGs0fv61ZDF7DAYqozNttkTg3cpBpD6q2iV/1fwumRYEAq0GSaKoCAOgAeH5aOhWKvc7uqiCQ3tZVc+FYYlQD1nUneLrFqBEPv9nOdRKQWhOR8F0Af1JXhG8Vmrw1QwtDJj4Ffb5MWgjZHGhPyrgo6Q9sucaeomSTSs0eHOw=----ATTACHMENT:----MTQ2Mzg2MDk5MTgxNjIwNyA1NzY0MTg2MzI1MjE0OTkzIDg5MzM5NTQwNDI3MDgxMzE=