plan = $plan; } public function clear(): void { $this->plan = null; } public function hasActivePlan(): bool { return $this->plan !== null; } public function getPlan(): ?ProviderExecutionPlan { return $this->plan; } public function getExecutableProviderNames(): array { if ($this->plan === null) return []; return array_values(array_map( static fn (ProviderSelection $selection): string => $selection->getProviderName(), array_filter( $this->plan->getSelections(), static fn ($selection): bool => $selection instanceof ProviderSelection && $selection->isExecutable() ) )); } }