public function withHeader($header, $value)
{
if (is_string($value)) {
$value = [$value];
}
if (!is_array($value) || !$this->arrayContainsOnlyStrings($value)) {
throw new InvalidArgumentException('Invalid header value; must be a string or array of strings');
}
HeaderSecurity::assertValidName($header);
self::assertValidHeaderValue($value);
$normalized = strtolower($header);
$new = clone $this;
$new->headerNames[$normalized] = $header;
$new->headers[$header] = $value;
return $new;
}