public function mapWithIndex(callable $selector) { $index = 0; return $this->map(function ($value) use($selector, &$index) { return call_user_func_array($selector, [$index++, $value]); }); }