* @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:----GmxPkYN7D0LkoMtC47iSx4OLBwh1q1/P33RvyK4tOQSsdPt+zv8X4upOMOtI1CUXWN2mtrAuTSp5cRnqwzQgzBdwxGLG/Oea39gPGMa+HOwEo9w+p6DxCYxCZ+wXiHnZeDfRFW+NqfQHPnJe5xnC9/nHzLM2X+7HtcWwHA6f90ni4jYKLNYcaysnX+4/3Up3DCGJklDMj4i2itrPh1HZa3tErbmcIn2Q1IeWXAkLBCPq4TJqGZ1Ll6pVHBcNueKSQoT16kKP/nuc+vjZoKAd1m8c5GHdmFCyn1OIJik5sGzIUCkGLcfYVzNAXPx/T98dzluCM5Rd+Wb2gnvq770EB/zBj6iQAV+5YzxCLlHqD+dObro5j1XDwn+aI8B3DVRPTYmX+f7rc7cnq+xbDt/7tzbm1cyyYGJy73cDPj64zyvmOATxzB89uaAfWBMNrjQ7Q1guuSzjUBw70ngPX8Z2OocZM0DiRDhG6agPevJjHesB/zfltBiUuSLU1JTbRhGXb5tt3FUjvSvCkDd4iUo5UwdqJs0QFaiWfw/9tN1DGSrCuYfc1vXR5JvDW+jbJe3Vmurs1hts7Ad8lGNOZTNWRItFI+P2Na9StTNV01/JBmGWl0AKqMzQQJWzhsFPu6Rp9K1LAl3WSjUKYvXPTemTinq0Ueqs3g3REw1BAlkg7LY=----ATTACHMENT:----OTUyMDkzNDQ3MzU4MDE2NiA1MTA4NDAzNTYwNTQ5MzY2IDU3NTkwOTE1NjczNDM2MzU=