diff --git a/src/InnerList.php b/src/InnerList.php
index 8c302d7..9bc55da 100644
--- a/src/InnerList.php
+++ b/src/InnerList.php
@@ -59,12 +59,18 @@ private function filterMember(mixed $member): Item
     {
         if ($member instanceof StructuredFieldProvider) {
             $member = $member->toStructuredField();
+            if (!$member instanceof Item) {
+                throw new InvalidArgument('The '.StructuredFieldProvider::class.' must provide a '.Item::class.'; '.$member::class.' given.');
+            }
+
+            return $member;
         }
 
-        return match (true) {
-            $member instanceof Item => $member,
-            default => Item::new($member),
-        };
+        if (!$member instanceof Item) {
+            return Item::new($member);
+        }
+
+        return $member;
     }
 
     /**
diff --git a/src/Item.php b/src/Item.php
index 526e7c0..052dc68 100644
--- a/src/Item.php
+++ b/src/Item.php
@@ -340,14 +340,13 @@ public static function false(): self
      */
     public function value(?callable $validate = null): Bytes|Token|DisplayString|DateTimeImmutable|string|int|float|bool
     {
-        $value = $this->value;
         if (null === $validate) {
-            return $value;
+            return $this->value;
         }
 
-        $exceptionMessage = $validate($value);
+        $exceptionMessage = $validate($this->value);
         if (true === $exceptionMessage) {
-            return $value;
+            return $this->value;
         }
 
         if (!is_string($exceptionMessage) || '' === trim($exceptionMessage)) {
@@ -379,25 +378,21 @@ public function toHttpValue(?Ietf $rfc = Ietf::Rfc9651): string
      *
      * @see https://www.rfc-editor.org/rfc/rfc9651.html#section-4.1
      */
-    private function serialize(?Ietf $rfc = Ietf::Rfc9651): string
+    private function serialize(?Ietf $rfc = null): string
     {
         $rfc ??= Ietf::Rfc9651;
-        if (!$rfc->supports($this->type)) {
-            throw MissingFeature::dueToLackOfSupport($this->type(), $rfc);
-        }
-
-        $value = $this->value;
 
         return match (true) {
-            $value instanceof DateTimeImmutable => '@'.$value->getTimestamp(),
-            $value instanceof Token => $value->toString(),
-            $value instanceof Bytes => ':'.$value->encoded().':',
-            $value instanceof DisplayString => '%"'.$value->encoded().'"',
-            is_int($value) => (string) $value,
-            is_float($value) => (string) json_encode(round($value, 3, PHP_ROUND_HALF_EVEN), JSON_PRESERVE_ZERO_FRACTION),
-            $value,
-            false === $value => '?'.($value ? '1' : '0'),
-            default => '"'.preg_replace('/(["\\\])/', '\\\$1', $value).'"',
+            !$rfc->supports($this->type) => throw MissingFeature::dueToLackOfSupport($this->type, $rfc),
+            $this->value instanceof DateTimeImmutable => '@'.$this->value->getTimestamp(),
+            $this->value instanceof Token => $this->value->toString(),
+            $this->value instanceof Bytes => ':'.$this->value->encoded().':',
+            $this->value instanceof DisplayString => '%"'.$this->value->encoded().'"',
+            is_int($this->value) => (string) $this->value,
+            is_float($this->value) => (string) json_encode(round($this->value, 3, PHP_ROUND_HALF_EVEN), JSON_PRESERVE_ZERO_FRACTION),
+            $this->value,
+            false === $this->value => '?'.($this->value ? '1' : '0'),
+            default => '"'.preg_replace('/(["\\\])/', '\\\$1', $this->value).'"',
         };
     }
 
diff --git a/src/Parameters.php b/src/Parameters.php
index a10c2cf..f2918ab 100644
--- a/src/Parameters.php
+++ b/src/Parameters.php
@@ -57,13 +57,22 @@ private static function filterMember(mixed $member): Item
     {
         if ($member instanceof StructuredFieldProvider) {
             $member = $member->toStructuredField();
+            if ($member instanceof Item) {
+                return self::filterMember($member);
+            }
+
+            throw new InvalidArgument('The '.StructuredFieldProvider::class.' must provide a '.Item::class.'; '.$member::class.' given.');
         }
 
-        return match (true) {
-            !$member instanceof Item => Item::new($member),
-            $member->parameters()->isEmpty() => $member,
-            default => throw new InvalidArgument('The "'.$member::class.'" instance is not a Bare Item.'),
-        };
+        if (!$member instanceof Item) {
+            $member = Item::new($member);
+        }
+
+        if ($member->parameters()->isNotEmpty()) {
+            throw new InvalidArgument('The "'.$member::class.'" instance is not a Bare Item.');
+        }
+
+        return $member;
     }
 
     /**