loop = $loop; return $instance; } public function withLimit(ConcurrencyLimit $limit): self { $instance = clone $this; $instance->limit = $limit; return $instance; } public function build(): Context { return new Context( $this->loop ?? Factory::create(), $this->limit ?? ConcurrencyLimit::unlimited() ); } }