self::REASON_POLICY_VIOLATION` (and any * provider-specific supporting fields) so consuming surfaces * can branch on the sub-reason without parsing the message * body. * * @param string $provider §4 provider key that raised the exception. * @param string $message Human-readable, non-secret summary. * @param array $context Structured diagnostic context; * SHOULD include a `reason` * entry for the §10.2 policy- * violation sub-case. * @param Throwable|null $previous Underlying cause, or null. */ public function __construct( string $provider, string $message = '', array $context = array(), ?Throwable $previous = null ) { parent::__construct( self::ERROR_CODE, $provider, $message, $context, $previous ); } }