$this->compareCapability, 'capture' => $this->captureCapability, default => throw new InvalidArgumentException('Unsupported operation ['.$operation.'].'), }; if ($this->configSupported && ! $this->runtimeValid) { return 'invalid_support_config'; } return match ($capability) { 'supported', 'limited' => $capability, default => 'excluded', }; } public function allows(string $operation): bool { return in_array($this->supportModeFor($operation), ['supported', 'limited'], true); } public function toArray(): array { return [ 'policy_type' => $this->policyType, 'subject_class' => $this->subjectClass->value, 'compare_capability' => $this->compareCapability, 'capture_capability' => $this->captureCapability, 'resolution_path' => $this->resolutionPath->value, 'config_supported' => $this->configSupported, 'runtime_valid' => $this->runtimeValid, 'source_model_expected' => $this->sourceModelExpected, ]; } }