Add tag-based Item constructors in Structured Headers for string-like values

As well as overloads for `absl::string_view`.

- Prevents accidental implicit conversions from `const char*` and `std::string` that silently defaulted to `kStringType` instead of requiring callers to choose the correct type explicitly, which is important for compliance with specifications using Structured Headers.
- Guarantees at compile time that only valid string-like types are constructed, eliminating runtime `QUICHE_CHECK` assertions on the `ItemType` enum parameter.

This contains no intentional observable behavioral changes.

PiperOrigin-RevId: 978581202
diff --git a/quiche/common/structured_headers.cc b/quiche/common/structured_headers.cc
index 78b7dfe..0653b5c 100644
--- a/quiche/common/structured_headers.cc
+++ b/quiche/common/structured_headers.cc
@@ -382,9 +382,9 @@
     size_t len = input_.find_first_not_of(version_ == kDraft09 ? kTokenChars09
                                                                : kTokenChars);
     if (len == absl::string_view::npos) len = input_.size();
-    std::string token(input_.substr(0, len));
+    absl::string_view token = input_.substr(0, len);
     input_.remove_prefix(len);
-    return Item(std::move(token), Item::kTokenType);
+    return Item(Item::token, token);
   }
 
   // Parses a Number ([SH09] 4.2.8, [RFC8941] 4.2.4).
@@ -493,7 +493,7 @@
         input_.remove_prefix(1);
       }
     }
-    return s;
+    return Item(Item::string, std::move(s));
   }
 
   // Parses a Byte Sequence ([SH09] 4.2.11, [RFC8941] 4.2.7).
@@ -531,7 +531,7 @@
     }
     input_.remove_prefix(len);
     ConsumeChar(delimiter);
-    return Item(std::move(*binary), Item::kByteSequenceType);
+    return Item(Item::byte_sequence, *std::move(binary));
   }
 
   // Parses a Boolean ([RFC8941] 4.2.8).
@@ -815,13 +815,13 @@
 Item::Item(std::string value, Item::ItemType type) {
   switch (type) {
     case kStringType:
-      value_.emplace<kStringType>(std::move(value));
+      value_.emplace<std::string>(std::move(value));
       break;
     case kTokenType:
-      value_.emplace<kTokenType>(std::move(value));
+      value_.emplace<Token>(std::move(value));
       break;
     case kByteSequenceType:
-      value_.emplace<kByteSequenceType>(std::move(value));
+      value_.emplace<ByteSequence>(std::move(value));
       break;
     default:
       QUICHE_CHECK(false);
@@ -834,6 +834,21 @@
 Item::Item(double value) : value_(value) {}
 Item::Item(bool value) : value_(value) {}
 
+Item::Item(string_t, const char* value) : value_(std::string(value)) {}
+Item::Item(string_t, absl::string_view value) : value_(std::string(value)) {}
+Item::Item(string_t, std::string value) : value_(std::move(value)) {}
+
+Item::Item(token_t, const char* value) : value_(Token(value)) {}
+Item::Item(token_t, absl::string_view value)
+    : value_(Token(std::string(value))) {}
+Item::Item(token_t, std::string value) : value_(Token(std::move(value))) {}
+
+Item::Item(byte_sequence_t, const char* value) : value_(ByteSequence(value)) {}
+Item::Item(byte_sequence_t, absl::string_view value)
+    : value_(ByteSequence(std::string(value))) {}
+Item::Item(byte_sequence_t, std::string value)
+    : value_(ByteSequence(std::move(value))) {}
+
 Item::Item(const Item&) = default;
 Item& Item::operator=(const Item&) = default;
 
@@ -861,23 +876,23 @@
 std::string* Item::GetIfString() { return std::get_if<std::string>(&value_); }
 
 const std::string* Item::GetIfToken() const {
-  const auto* token = std::get_if<Token>(&value_);
-  return token ? &token->value : nullptr;
+  const auto* wrapper = std::get_if<Token>(&value_);
+  return wrapper ? &wrapper->value : nullptr;
 }
 
 std::string* Item::GetIfToken() {
-  auto* token = std::get_if<Token>(&value_);
-  return token ? &token->value : nullptr;
+  auto* wrapper = std::get_if<Token>(&value_);
+  return wrapper ? &wrapper->value : nullptr;
 }
 
 const std::string* Item::GetIfByteSequence() const {
-  const auto* byte_sequence = std::get_if<ByteSequence>(&value_);
-  return byte_sequence ? &byte_sequence->value : nullptr;
+  const auto* wrapper = std::get_if<ByteSequence>(&value_);
+  return wrapper ? &wrapper->value : nullptr;
 }
 
 std::string* Item::GetIfByteSequence() {
-  auto* byte_sequence = std::get_if<ByteSequence>(&value_);
-  return byte_sequence ? &byte_sequence->value : nullptr;
+  auto* wrapper = std::get_if<ByteSequence>(&value_);
+  return wrapper ? &wrapper->value : nullptr;
 }
 
 const bool* Item::GetIfBoolean() const { return std::get_if<bool>(&value_); }
diff --git a/quiche/common/structured_headers.h b/quiche/common/structured_headers.h
index efb9a2a..5483138 100644
--- a/quiche/common/structured_headers.h
+++ b/quiche/common/structured_headers.h
@@ -70,12 +70,47 @@
     kByteSequenceType,
     kBooleanType
   };
+
+  struct string_t {
+    constexpr explicit string_t() = default;
+  };
+  inline static constexpr string_t string;
+
+  struct token_t {
+    constexpr explicit token_t() = default;
+  };
+  inline static constexpr token_t token;
+
+  struct byte_sequence_t {
+    constexpr explicit byte_sequence_t() = default;
+  };
+  inline static constexpr byte_sequence_t byte_sequence;
+
   Item();
   explicit Item(int64_t value);
   explicit Item(double value);
   explicit Item(bool value);
 
+  // Prevent pointers from implicitly converting to bool.
+  template <typename T>
+  explicit Item(const T*) = delete;
+  explicit Item(std::nullptr_t) = delete;
+
+  Item(string_t, const char* value);
+  Item(string_t, absl::string_view value);
+  Item(string_t, std::string value);
+
+  Item(token_t, const char* value);
+  Item(token_t, absl::string_view value);
+  Item(token_t, std::string value);
+
+  Item(byte_sequence_t, const char* value);
+  Item(byte_sequence_t, absl::string_view value);
+  Item(byte_sequence_t, std::string value);
+
   // Constructors for string-like items: Strings, Tokens and Byte Sequences.
+  // Deprecated: Use one of the tag-based constructors with `Item::string`,
+  // `Item::token`, or `Item::byte_sequence` instead.
   Item(const char* value, Item::ItemType type = kStringType);
   Item(std::string value, Item::ItemType type = kStringType);
 
diff --git a/quiche/common/structured_headers_generated_test.cc b/quiche/common/structured_headers_generated_test.cc
index f8fe166..044dd67 100644
--- a/quiche/common/structured_headers_generated_test.cc
+++ b/quiche/common/structured_headers_generated_test.cc
@@ -17,7 +17,7 @@
 // being automatically translated from the JSON source to C++ unit tests. Please
 // do not modify, as the contents will be overwritten when this is re-generated.
 
-// Generated on 2026-07-14 from structured-field-tests.git @
+// Generated on 2026-09-09 from structured-field-tests.git @
 // 1e280c3ed9ffe0ca5fdb1d97219dddc389007677.
 
 namespace quiche {
@@ -29,23 +29,24 @@
 Item Integer(int64_t value) { return Item(value); }
 
 std::pair<std::string, Item> BooleanParam(std::string key, bool value) {
-  return std::make_pair(key, Item(value));
+  return std::make_pair(std::move(key), Item(value));
 }
 
 std::pair<std::string, Item> DoubleParam(std::string key, double value) {
-  return std::make_pair(key, Item(value));
+  return std::make_pair(std::move(key), Item(value));
 }
 
 std::pair<std::string, Item> Param(std::string key, int64_t value) {
-  return std::make_pair(key, Item(value));
+  return std::make_pair(std::move(key), Item(value));
 }
 
-std::pair<std::string, Item> Param(std::string key, std::string value) {
-  return std::make_pair(key, Item(value));
+std::pair<std::string, Item> Param(std::string key, absl::string_view value) {
+  return std::make_pair(std::move(key), Item(Item::string, value));
 }
 
-std::pair<std::string, Item> TokenParam(std::string key, std::string value) {
-  return std::make_pair(key, Item(value, Item::kTokenType));
+std::pair<std::string, Item> TokenParam(std::string key,
+                                        absl::string_view value) {
+  return std::make_pair(std::move(key), Item(Item::token, value));
 }
 
 const struct ParameterizedItemTestCase {
@@ -62,19 +63,15 @@
     {"basic binary",
      ":aGVsbG8=:",
      10,
-     {{Item("hello", Item::kByteSequenceType), {}}},
+     {{Item(Item::byte_sequence, "hello"), {}}},
      nullptr},
-    {"empty binary",
-     "::",
-     2,
-     {{Item("", Item::kByteSequenceType), {}}},
-     nullptr},
+    {"empty binary", "::", 2, {{Item(Item::byte_sequence, ""), {}}}, nullptr},
     {"padding at beginning", ":=aGVsbG8=:", 11, std::nullopt, nullptr},
     {"padding in middle", ":a=GVsbG8=:", 11, std::nullopt, nullptr},
     {"bad padding",
      ":aGVsbG8:",
      9,
-     {{Item("hello", Item::kByteSequenceType), {}}},
+     {{Item(Item::byte_sequence, "hello"), {}}},
      ":aGVsbG8=:"},
     {"bad padding dot", ":aGVsbG8.:", 10, std::nullopt, nullptr},
     {"bad end delimiter", ":aGVsbG8=", 9, std::nullopt, nullptr},
@@ -85,12 +82,12 @@
     {"non-zero pad bits",
      ":iZ==:",
      6,
-     {{Item("\211", Item::kByteSequenceType), {}}},
+     {{Item(Item::byte_sequence, "\211"), {}}},
      ":iQ==:"},
     {"non-ASCII binary",
      ":/+Ah:",
      6,
-     {{Item("\377\340!", Item::kByteSequenceType), {}}},
+     {{Item(Item::byte_sequence, "\377\340!"), {}}},
      nullptr},
     {"base64url binary", ":_-Ah:", 6, std::nullopt, nullptr},
     {"binary prefix only", ":", 1, std::nullopt, nullptr},
@@ -129,12 +126,12 @@
     {"Example-StringHeader",
      "\"hello world\"",
      13,
-     {{Item("hello world"), {}}},
+     {{Item(Item::string, "hello world"), {}}},
      nullptr},
     {"Example-BinaryHdr",
      ":cHJldGVuZCB0aGlzIGlzIGJpbmFyeSBjb250ZW50Lg==:",
      46,
-     {{Item("pretend this is binary content.", Item::kByteSequenceType), {}}},
+     {{Item(Item::byte_sequence, "pretend this is binary content."), {}}},
      nullptr},
     {"Example-BoolHdr", "?1", 2, {{Item(true), {}}}, nullptr},
     // item.json
@@ -161,7 +158,8 @@
      "========================================================================="
      "====\"",
      1026,
-     {{Item("=================================================================="
+     {{Item(Item::string,
+            "=================================================================="
             "=================================================================="
             "=================================================================="
             "=================================================================="
@@ -238,7 +236,8 @@
      "\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\"
      "\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\"",
      2050,
-     {{Item("\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
+     {{Item(Item::string,
+            "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
             "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
             "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
             "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""
@@ -282,15 +281,15 @@
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      "a",
      512,
-     {{Item("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+     {{Item(Item::token,
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-            Item::kTokenType),
+            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
        {}}},
      nullptr},
     {"large byte sequence",
@@ -596,6 +595,7 @@
      "FhYWFhYWFhYWFhYWFhYQ==:",
      21850,
      {{Item(
+           Item::byte_sequence,
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
@@ -840,8 +840,7 @@
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
            "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-           "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-           Item::kByteSequenceType),
+           "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
        {}}},
      nullptr},
     // number-generated.json
@@ -1767,101 +1766,473 @@
     {"0x1d in string", "\" \035 \"", 5, std::nullopt, nullptr},
     {"0x1e in string", "\" \036 \"", 5, std::nullopt, nullptr},
     {"0x1f in string", "\" \037 \"", 5, std::nullopt, nullptr},
-    {"0x20 in string", "\"   \"", 5, {{Item("   "), {}}}, nullptr},
-    {"0x21 in string", "\" ! \"", 5, {{Item(" ! "), {}}}, nullptr},
+    {"0x20 in string",
+     "\"   \"",
+     5,
+     {{Item(Item::string, "   "), {}}},
+     nullptr},
+    {"0x21 in string",
+     "\" ! \"",
+     5,
+     {{Item(Item::string, " ! "), {}}},
+     nullptr},
     {"0x22 in string", "\" \" \"", 5, std::nullopt, nullptr},
-    {"0x23 in string", "\" # \"", 5, {{Item(" # "), {}}}, nullptr},
-    {"0x24 in string", "\" $ \"", 5, {{Item(" $ "), {}}}, nullptr},
-    {"0x25 in string", "\" % \"", 5, {{Item(" % "), {}}}, nullptr},
-    {"0x26 in string", "\" & \"", 5, {{Item(" & "), {}}}, nullptr},
-    {"0x27 in string", "\" ' \"", 5, {{Item(" ' "), {}}}, nullptr},
-    {"0x28 in string", "\" ( \"", 5, {{Item(" ( "), {}}}, nullptr},
-    {"0x29 in string", "\" ) \"", 5, {{Item(" ) "), {}}}, nullptr},
-    {"0x2a in string", "\" * \"", 5, {{Item(" * "), {}}}, nullptr},
-    {"0x2b in string", "\" + \"", 5, {{Item(" + "), {}}}, nullptr},
-    {"0x2c in string", "\" , \"", 5, {{Item(" , "), {}}}, nullptr},
-    {"0x2d in string", "\" - \"", 5, {{Item(" - "), {}}}, nullptr},
-    {"0x2e in string", "\" . \"", 5, {{Item(" . "), {}}}, nullptr},
-    {"0x2f in string", "\" / \"", 5, {{Item(" / "), {}}}, nullptr},
-    {"0x30 in string", "\" 0 \"", 5, {{Item(" 0 "), {}}}, nullptr},
-    {"0x31 in string", "\" 1 \"", 5, {{Item(" 1 "), {}}}, nullptr},
-    {"0x32 in string", "\" 2 \"", 5, {{Item(" 2 "), {}}}, nullptr},
-    {"0x33 in string", "\" 3 \"", 5, {{Item(" 3 "), {}}}, nullptr},
-    {"0x34 in string", "\" 4 \"", 5, {{Item(" 4 "), {}}}, nullptr},
-    {"0x35 in string", "\" 5 \"", 5, {{Item(" 5 "), {}}}, nullptr},
-    {"0x36 in string", "\" 6 \"", 5, {{Item(" 6 "), {}}}, nullptr},
-    {"0x37 in string", "\" 7 \"", 5, {{Item(" 7 "), {}}}, nullptr},
-    {"0x38 in string", "\" 8 \"", 5, {{Item(" 8 "), {}}}, nullptr},
-    {"0x39 in string", "\" 9 \"", 5, {{Item(" 9 "), {}}}, nullptr},
-    {"0x3a in string", "\" : \"", 5, {{Item(" : "), {}}}, nullptr},
-    {"0x3b in string", "\" ; \"", 5, {{Item(" ; "), {}}}, nullptr},
-    {"0x3c in string", "\" < \"", 5, {{Item(" < "), {}}}, nullptr},
-    {"0x3d in string", "\" = \"", 5, {{Item(" = "), {}}}, nullptr},
-    {"0x3e in string", "\" > \"", 5, {{Item(" > "), {}}}, nullptr},
-    {"0x3f in string", "\" ? \"", 5, {{Item(" ? "), {}}}, nullptr},
-    {"0x40 in string", "\" @ \"", 5, {{Item(" @ "), {}}}, nullptr},
-    {"0x41 in string", "\" A \"", 5, {{Item(" A "), {}}}, nullptr},
-    {"0x42 in string", "\" B \"", 5, {{Item(" B "), {}}}, nullptr},
-    {"0x43 in string", "\" C \"", 5, {{Item(" C "), {}}}, nullptr},
-    {"0x44 in string", "\" D \"", 5, {{Item(" D "), {}}}, nullptr},
-    {"0x45 in string", "\" E \"", 5, {{Item(" E "), {}}}, nullptr},
-    {"0x46 in string", "\" F \"", 5, {{Item(" F "), {}}}, nullptr},
-    {"0x47 in string", "\" G \"", 5, {{Item(" G "), {}}}, nullptr},
-    {"0x48 in string", "\" H \"", 5, {{Item(" H "), {}}}, nullptr},
-    {"0x49 in string", "\" I \"", 5, {{Item(" I "), {}}}, nullptr},
-    {"0x4a in string", "\" J \"", 5, {{Item(" J "), {}}}, nullptr},
-    {"0x4b in string", "\" K \"", 5, {{Item(" K "), {}}}, nullptr},
-    {"0x4c in string", "\" L \"", 5, {{Item(" L "), {}}}, nullptr},
-    {"0x4d in string", "\" M \"", 5, {{Item(" M "), {}}}, nullptr},
-    {"0x4e in string", "\" N \"", 5, {{Item(" N "), {}}}, nullptr},
-    {"0x4f in string", "\" O \"", 5, {{Item(" O "), {}}}, nullptr},
-    {"0x50 in string", "\" P \"", 5, {{Item(" P "), {}}}, nullptr},
-    {"0x51 in string", "\" Q \"", 5, {{Item(" Q "), {}}}, nullptr},
-    {"0x52 in string", "\" R \"", 5, {{Item(" R "), {}}}, nullptr},
-    {"0x53 in string", "\" S \"", 5, {{Item(" S "), {}}}, nullptr},
-    {"0x54 in string", "\" T \"", 5, {{Item(" T "), {}}}, nullptr},
-    {"0x55 in string", "\" U \"", 5, {{Item(" U "), {}}}, nullptr},
-    {"0x56 in string", "\" V \"", 5, {{Item(" V "), {}}}, nullptr},
-    {"0x57 in string", "\" W \"", 5, {{Item(" W "), {}}}, nullptr},
-    {"0x58 in string", "\" X \"", 5, {{Item(" X "), {}}}, nullptr},
-    {"0x59 in string", "\" Y \"", 5, {{Item(" Y "), {}}}, nullptr},
-    {"0x5a in string", "\" Z \"", 5, {{Item(" Z "), {}}}, nullptr},
-    {"0x5b in string", "\" [ \"", 5, {{Item(" [ "), {}}}, nullptr},
+    {"0x23 in string",
+     "\" # \"",
+     5,
+     {{Item(Item::string, " # "), {}}},
+     nullptr},
+    {"0x24 in string",
+     "\" $ \"",
+     5,
+     {{Item(Item::string, " $ "), {}}},
+     nullptr},
+    {"0x25 in string",
+     "\" % \"",
+     5,
+     {{Item(Item::string, " % "), {}}},
+     nullptr},
+    {"0x26 in string",
+     "\" & \"",
+     5,
+     {{Item(Item::string, " & "), {}}},
+     nullptr},
+    {"0x27 in string",
+     "\" ' \"",
+     5,
+     {{Item(Item::string, " ' "), {}}},
+     nullptr},
+    {"0x28 in string",
+     "\" ( \"",
+     5,
+     {{Item(Item::string, " ( "), {}}},
+     nullptr},
+    {"0x29 in string",
+     "\" ) \"",
+     5,
+     {{Item(Item::string, " ) "), {}}},
+     nullptr},
+    {"0x2a in string",
+     "\" * \"",
+     5,
+     {{Item(Item::string, " * "), {}}},
+     nullptr},
+    {"0x2b in string",
+     "\" + \"",
+     5,
+     {{Item(Item::string, " + "), {}}},
+     nullptr},
+    {"0x2c in string",
+     "\" , \"",
+     5,
+     {{Item(Item::string, " , "), {}}},
+     nullptr},
+    {"0x2d in string",
+     "\" - \"",
+     5,
+     {{Item(Item::string, " - "), {}}},
+     nullptr},
+    {"0x2e in string",
+     "\" . \"",
+     5,
+     {{Item(Item::string, " . "), {}}},
+     nullptr},
+    {"0x2f in string",
+     "\" / \"",
+     5,
+     {{Item(Item::string, " / "), {}}},
+     nullptr},
+    {"0x30 in string",
+     "\" 0 \"",
+     5,
+     {{Item(Item::string, " 0 "), {}}},
+     nullptr},
+    {"0x31 in string",
+     "\" 1 \"",
+     5,
+     {{Item(Item::string, " 1 "), {}}},
+     nullptr},
+    {"0x32 in string",
+     "\" 2 \"",
+     5,
+     {{Item(Item::string, " 2 "), {}}},
+     nullptr},
+    {"0x33 in string",
+     "\" 3 \"",
+     5,
+     {{Item(Item::string, " 3 "), {}}},
+     nullptr},
+    {"0x34 in string",
+     "\" 4 \"",
+     5,
+     {{Item(Item::string, " 4 "), {}}},
+     nullptr},
+    {"0x35 in string",
+     "\" 5 \"",
+     5,
+     {{Item(Item::string, " 5 "), {}}},
+     nullptr},
+    {"0x36 in string",
+     "\" 6 \"",
+     5,
+     {{Item(Item::string, " 6 "), {}}},
+     nullptr},
+    {"0x37 in string",
+     "\" 7 \"",
+     5,
+     {{Item(Item::string, " 7 "), {}}},
+     nullptr},
+    {"0x38 in string",
+     "\" 8 \"",
+     5,
+     {{Item(Item::string, " 8 "), {}}},
+     nullptr},
+    {"0x39 in string",
+     "\" 9 \"",
+     5,
+     {{Item(Item::string, " 9 "), {}}},
+     nullptr},
+    {"0x3a in string",
+     "\" : \"",
+     5,
+     {{Item(Item::string, " : "), {}}},
+     nullptr},
+    {"0x3b in string",
+     "\" ; \"",
+     5,
+     {{Item(Item::string, " ; "), {}}},
+     nullptr},
+    {"0x3c in string",
+     "\" < \"",
+     5,
+     {{Item(Item::string, " < "), {}}},
+     nullptr},
+    {"0x3d in string",
+     "\" = \"",
+     5,
+     {{Item(Item::string, " = "), {}}},
+     nullptr},
+    {"0x3e in string",
+     "\" > \"",
+     5,
+     {{Item(Item::string, " > "), {}}},
+     nullptr},
+    {"0x3f in string",
+     "\" ? \"",
+     5,
+     {{Item(Item::string, " ? "), {}}},
+     nullptr},
+    {"0x40 in string",
+     "\" @ \"",
+     5,
+     {{Item(Item::string, " @ "), {}}},
+     nullptr},
+    {"0x41 in string",
+     "\" A \"",
+     5,
+     {{Item(Item::string, " A "), {}}},
+     nullptr},
+    {"0x42 in string",
+     "\" B \"",
+     5,
+     {{Item(Item::string, " B "), {}}},
+     nullptr},
+    {"0x43 in string",
+     "\" C \"",
+     5,
+     {{Item(Item::string, " C "), {}}},
+     nullptr},
+    {"0x44 in string",
+     "\" D \"",
+     5,
+     {{Item(Item::string, " D "), {}}},
+     nullptr},
+    {"0x45 in string",
+     "\" E \"",
+     5,
+     {{Item(Item::string, " E "), {}}},
+     nullptr},
+    {"0x46 in string",
+     "\" F \"",
+     5,
+     {{Item(Item::string, " F "), {}}},
+     nullptr},
+    {"0x47 in string",
+     "\" G \"",
+     5,
+     {{Item(Item::string, " G "), {}}},
+     nullptr},
+    {"0x48 in string",
+     "\" H \"",
+     5,
+     {{Item(Item::string, " H "), {}}},
+     nullptr},
+    {"0x49 in string",
+     "\" I \"",
+     5,
+     {{Item(Item::string, " I "), {}}},
+     nullptr},
+    {"0x4a in string",
+     "\" J \"",
+     5,
+     {{Item(Item::string, " J "), {}}},
+     nullptr},
+    {"0x4b in string",
+     "\" K \"",
+     5,
+     {{Item(Item::string, " K "), {}}},
+     nullptr},
+    {"0x4c in string",
+     "\" L \"",
+     5,
+     {{Item(Item::string, " L "), {}}},
+     nullptr},
+    {"0x4d in string",
+     "\" M \"",
+     5,
+     {{Item(Item::string, " M "), {}}},
+     nullptr},
+    {"0x4e in string",
+     "\" N \"",
+     5,
+     {{Item(Item::string, " N "), {}}},
+     nullptr},
+    {"0x4f in string",
+     "\" O \"",
+     5,
+     {{Item(Item::string, " O "), {}}},
+     nullptr},
+    {"0x50 in string",
+     "\" P \"",
+     5,
+     {{Item(Item::string, " P "), {}}},
+     nullptr},
+    {"0x51 in string",
+     "\" Q \"",
+     5,
+     {{Item(Item::string, " Q "), {}}},
+     nullptr},
+    {"0x52 in string",
+     "\" R \"",
+     5,
+     {{Item(Item::string, " R "), {}}},
+     nullptr},
+    {"0x53 in string",
+     "\" S \"",
+     5,
+     {{Item(Item::string, " S "), {}}},
+     nullptr},
+    {"0x54 in string",
+     "\" T \"",
+     5,
+     {{Item(Item::string, " T "), {}}},
+     nullptr},
+    {"0x55 in string",
+     "\" U \"",
+     5,
+     {{Item(Item::string, " U "), {}}},
+     nullptr},
+    {"0x56 in string",
+     "\" V \"",
+     5,
+     {{Item(Item::string, " V "), {}}},
+     nullptr},
+    {"0x57 in string",
+     "\" W \"",
+     5,
+     {{Item(Item::string, " W "), {}}},
+     nullptr},
+    {"0x58 in string",
+     "\" X \"",
+     5,
+     {{Item(Item::string, " X "), {}}},
+     nullptr},
+    {"0x59 in string",
+     "\" Y \"",
+     5,
+     {{Item(Item::string, " Y "), {}}},
+     nullptr},
+    {"0x5a in string",
+     "\" Z \"",
+     5,
+     {{Item(Item::string, " Z "), {}}},
+     nullptr},
+    {"0x5b in string",
+     "\" [ \"",
+     5,
+     {{Item(Item::string, " [ "), {}}},
+     nullptr},
     {"0x5c in string", "\" \\ \"", 5, std::nullopt, nullptr},
-    {"0x5d in string", "\" ] \"", 5, {{Item(" ] "), {}}}, nullptr},
-    {"0x5e in string", "\" ^ \"", 5, {{Item(" ^ "), {}}}, nullptr},
-    {"0x5f in string", "\" _ \"", 5, {{Item(" _ "), {}}}, nullptr},
-    {"0x60 in string", "\" ` \"", 5, {{Item(" ` "), {}}}, nullptr},
-    {"0x61 in string", "\" a \"", 5, {{Item(" a "), {}}}, nullptr},
-    {"0x62 in string", "\" b \"", 5, {{Item(" b "), {}}}, nullptr},
-    {"0x63 in string", "\" c \"", 5, {{Item(" c "), {}}}, nullptr},
-    {"0x64 in string", "\" d \"", 5, {{Item(" d "), {}}}, nullptr},
-    {"0x65 in string", "\" e \"", 5, {{Item(" e "), {}}}, nullptr},
-    {"0x66 in string", "\" f \"", 5, {{Item(" f "), {}}}, nullptr},
-    {"0x67 in string", "\" g \"", 5, {{Item(" g "), {}}}, nullptr},
-    {"0x68 in string", "\" h \"", 5, {{Item(" h "), {}}}, nullptr},
-    {"0x69 in string", "\" i \"", 5, {{Item(" i "), {}}}, nullptr},
-    {"0x6a in string", "\" j \"", 5, {{Item(" j "), {}}}, nullptr},
-    {"0x6b in string", "\" k \"", 5, {{Item(" k "), {}}}, nullptr},
-    {"0x6c in string", "\" l \"", 5, {{Item(" l "), {}}}, nullptr},
-    {"0x6d in string", "\" m \"", 5, {{Item(" m "), {}}}, nullptr},
-    {"0x6e in string", "\" n \"", 5, {{Item(" n "), {}}}, nullptr},
-    {"0x6f in string", "\" o \"", 5, {{Item(" o "), {}}}, nullptr},
-    {"0x70 in string", "\" p \"", 5, {{Item(" p "), {}}}, nullptr},
-    {"0x71 in string", "\" q \"", 5, {{Item(" q "), {}}}, nullptr},
-    {"0x72 in string", "\" r \"", 5, {{Item(" r "), {}}}, nullptr},
-    {"0x73 in string", "\" s \"", 5, {{Item(" s "), {}}}, nullptr},
-    {"0x74 in string", "\" t \"", 5, {{Item(" t "), {}}}, nullptr},
-    {"0x75 in string", "\" u \"", 5, {{Item(" u "), {}}}, nullptr},
-    {"0x76 in string", "\" v \"", 5, {{Item(" v "), {}}}, nullptr},
-    {"0x77 in string", "\" w \"", 5, {{Item(" w "), {}}}, nullptr},
-    {"0x78 in string", "\" x \"", 5, {{Item(" x "), {}}}, nullptr},
-    {"0x79 in string", "\" y \"", 5, {{Item(" y "), {}}}, nullptr},
-    {"0x7a in string", "\" z \"", 5, {{Item(" z "), {}}}, nullptr},
-    {"0x7b in string", "\" { \"", 5, {{Item(" { "), {}}}, nullptr},
-    {"0x7c in string", "\" | \"", 5, {{Item(" | "), {}}}, nullptr},
-    {"0x7d in string", "\" } \"", 5, {{Item(" } "), {}}}, nullptr},
-    {"0x7e in string", "\" ~ \"", 5, {{Item(" ~ "), {}}}, nullptr},
+    {"0x5d in string",
+     "\" ] \"",
+     5,
+     {{Item(Item::string, " ] "), {}}},
+     nullptr},
+    {"0x5e in string",
+     "\" ^ \"",
+     5,
+     {{Item(Item::string, " ^ "), {}}},
+     nullptr},
+    {"0x5f in string",
+     "\" _ \"",
+     5,
+     {{Item(Item::string, " _ "), {}}},
+     nullptr},
+    {"0x60 in string",
+     "\" ` \"",
+     5,
+     {{Item(Item::string, " ` "), {}}},
+     nullptr},
+    {"0x61 in string",
+     "\" a \"",
+     5,
+     {{Item(Item::string, " a "), {}}},
+     nullptr},
+    {"0x62 in string",
+     "\" b \"",
+     5,
+     {{Item(Item::string, " b "), {}}},
+     nullptr},
+    {"0x63 in string",
+     "\" c \"",
+     5,
+     {{Item(Item::string, " c "), {}}},
+     nullptr},
+    {"0x64 in string",
+     "\" d \"",
+     5,
+     {{Item(Item::string, " d "), {}}},
+     nullptr},
+    {"0x65 in string",
+     "\" e \"",
+     5,
+     {{Item(Item::string, " e "), {}}},
+     nullptr},
+    {"0x66 in string",
+     "\" f \"",
+     5,
+     {{Item(Item::string, " f "), {}}},
+     nullptr},
+    {"0x67 in string",
+     "\" g \"",
+     5,
+     {{Item(Item::string, " g "), {}}},
+     nullptr},
+    {"0x68 in string",
+     "\" h \"",
+     5,
+     {{Item(Item::string, " h "), {}}},
+     nullptr},
+    {"0x69 in string",
+     "\" i \"",
+     5,
+     {{Item(Item::string, " i "), {}}},
+     nullptr},
+    {"0x6a in string",
+     "\" j \"",
+     5,
+     {{Item(Item::string, " j "), {}}},
+     nullptr},
+    {"0x6b in string",
+     "\" k \"",
+     5,
+     {{Item(Item::string, " k "), {}}},
+     nullptr},
+    {"0x6c in string",
+     "\" l \"",
+     5,
+     {{Item(Item::string, " l "), {}}},
+     nullptr},
+    {"0x6d in string",
+     "\" m \"",
+     5,
+     {{Item(Item::string, " m "), {}}},
+     nullptr},
+    {"0x6e in string",
+     "\" n \"",
+     5,
+     {{Item(Item::string, " n "), {}}},
+     nullptr},
+    {"0x6f in string",
+     "\" o \"",
+     5,
+     {{Item(Item::string, " o "), {}}},
+     nullptr},
+    {"0x70 in string",
+     "\" p \"",
+     5,
+     {{Item(Item::string, " p "), {}}},
+     nullptr},
+    {"0x71 in string",
+     "\" q \"",
+     5,
+     {{Item(Item::string, " q "), {}}},
+     nullptr},
+    {"0x72 in string",
+     "\" r \"",
+     5,
+     {{Item(Item::string, " r "), {}}},
+     nullptr},
+    {"0x73 in string",
+     "\" s \"",
+     5,
+     {{Item(Item::string, " s "), {}}},
+     nullptr},
+    {"0x74 in string",
+     "\" t \"",
+     5,
+     {{Item(Item::string, " t "), {}}},
+     nullptr},
+    {"0x75 in string",
+     "\" u \"",
+     5,
+     {{Item(Item::string, " u "), {}}},
+     nullptr},
+    {"0x76 in string",
+     "\" v \"",
+     5,
+     {{Item(Item::string, " v "), {}}},
+     nullptr},
+    {"0x77 in string",
+     "\" w \"",
+     5,
+     {{Item(Item::string, " w "), {}}},
+     nullptr},
+    {"0x78 in string",
+     "\" x \"",
+     5,
+     {{Item(Item::string, " x "), {}}},
+     nullptr},
+    {"0x79 in string",
+     "\" y \"",
+     5,
+     {{Item(Item::string, " y "), {}}},
+     nullptr},
+    {"0x7a in string",
+     "\" z \"",
+     5,
+     {{Item(Item::string, " z "), {}}},
+     nullptr},
+    {"0x7b in string",
+     "\" { \"",
+     5,
+     {{Item(Item::string, " { "), {}}},
+     nullptr},
+    {"0x7c in string",
+     "\" | \"",
+     5,
+     {{Item(Item::string, " | "), {}}},
+     nullptr},
+    {"0x7d in string",
+     "\" } \"",
+     5,
+     {{Item(Item::string, " } "), {}}},
+     nullptr},
+    {"0x7e in string",
+     "\" ~ \"",
+     5,
+     {{Item(Item::string, " ~ "), {}}},
+     nullptr},
     {"0x7f in string", "\" \177 \"", 5, std::nullopt, nullptr},
     {"Escaped 0x00 in string", "\"\\\000\"", 4, std::nullopt, nullptr},
     {"Escaped 0x01 in string", "\"\\\001\"", 4, std::nullopt, nullptr},
@@ -1897,7 +2268,11 @@
     {"Escaped 0x1f in string", "\"\\\037\"", 4, std::nullopt, nullptr},
     {"Escaped 0x20 in string", "\"\\ \"", 4, std::nullopt, nullptr},
     {"Escaped 0x21 in string", "\"\\!\"", 4, std::nullopt, nullptr},
-    {"Escaped 0x22 in string", "\"\\\"\"", 4, {{Item("\""), {}}}, nullptr},
+    {"Escaped 0x22 in string",
+     "\"\\\"\"",
+     4,
+     {{Item(Item::string, "\""), {}}},
+     nullptr},
     {"Escaped 0x23 in string", "\"\\#\"", 4, std::nullopt, nullptr},
     {"Escaped 0x24 in string", "\"\\$\"", 4, std::nullopt, nullptr},
     {"Escaped 0x25 in string", "\"\\%\"", 4, std::nullopt, nullptr},
@@ -1955,7 +2330,11 @@
     {"Escaped 0x59 in string", "\"\\Y\"", 4, std::nullopt, nullptr},
     {"Escaped 0x5a in string", "\"\\Z\"", 4, std::nullopt, nullptr},
     {"Escaped 0x5b in string", "\"\\[\"", 4, std::nullopt, nullptr},
-    {"Escaped 0x5c in string", "\"\\\\\"", 4, {{Item("\\"), {}}}, nullptr},
+    {"Escaped 0x5c in string",
+     "\"\\\\\"",
+     4,
+     {{Item(Item::string, "\\"), {}}},
+     nullptr},
     {"Escaped 0x5d in string", "\"\\]\"", 4, std::nullopt, nullptr},
     {"Escaped 0x5e in string", "\"\\^\"", 4, std::nullopt, nullptr},
     {"Escaped 0x5f in string", "\"\\_\"", 4, std::nullopt, nullptr},
@@ -1992,22 +2371,31 @@
     {"Escaped 0x7e in string", "\"\\~\"", 4, std::nullopt, nullptr},
     {"Escaped 0x7f in string", "\"\\\177\"", 4, std::nullopt, nullptr},
     // string.json
-    {"basic string", "\"foo bar\"", 9, {{Item("foo bar"), {}}}, nullptr},
-    {"empty string", "\"\"", 2, {{Item(""), {}}}, nullptr},
+    {"basic string",
+     "\"foo bar\"",
+     9,
+     {{Item(Item::string, "foo bar"), {}}},
+     nullptr},
+    {"empty string", "\"\"", 2, {{Item(Item::string, ""), {}}}, nullptr},
     {"long string",
      "\"foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
      "foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
      "foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
      "foo foo foo foo foo foo foo foo foo foo foo foo \"",
      262,
-     {{Item("foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
+     {{Item(Item::string,
+            "foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
             "foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
             "foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
             "foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo "
             "foo "),
        {}}},
      nullptr},
-    {"whitespace string", "\"   \"", 5, {{Item("   "), {}}}, nullptr},
+    {"whitespace string",
+     "\"   \"",
+     5,
+     {{Item(Item::string, "   "), {}}},
+     nullptr},
     {"non-ascii string", "\"f\374\374\"", 5, std::nullopt, nullptr},
     {"tab in string", "\"\t\"", 3, std::nullopt, nullptr},
     {"newline in string", "\" \n \"", 5, std::nullopt, nullptr},
@@ -2016,7 +2404,7 @@
     {"string quoting",
      "\"foo \\\"bar\\\" \\\\ baz\"",
      20,
-     {{Item("foo \"bar\" \\ baz"), {}}},
+     {{Item(Item::string, "foo \"bar\" \\ baz"), {}}},
      nullptr},
     {"bad string quoting", "\"foo \\,\"", 8, std::nullopt, nullptr},
     {"ending string quote", "\"foo \\\"", 7, std::nullopt, nullptr},
@@ -2024,7 +2412,7 @@
     {"two lines string",
      "\"foo, bar\"",
      10,
-     {{Item("foo, bar"), {}}},
+     {{Item(Item::string, "foo, bar"), {}}},
      "\"foo, bar\""},
     // token-generated.json
     {"0x00 in token", "a\000a", 3, std::nullopt, nullptr},
@@ -2060,104 +2448,104 @@
     {"0x1e in token", "a\036a", 3, std::nullopt, nullptr},
     {"0x1f in token", "a\037a", 3, std::nullopt, nullptr},
     {"0x20 in token", "a a", 3, std::nullopt, nullptr},
-    {"0x21 in token", "a!a", 3, {{Item("a!a", Item::kTokenType), {}}}, nullptr},
+    {"0x21 in token", "a!a", 3, {{Item(Item::token, "a!a"), {}}}, nullptr},
     {"0x22 in token", "a\"a", 3, std::nullopt, nullptr},
-    {"0x23 in token", "a#a", 3, {{Item("a#a", Item::kTokenType), {}}}, nullptr},
-    {"0x24 in token", "a$a", 3, {{Item("a$a", Item::kTokenType), {}}}, nullptr},
-    {"0x25 in token", "a%a", 3, {{Item("a%a", Item::kTokenType), {}}}, nullptr},
-    {"0x26 in token", "a&a", 3, {{Item("a&a", Item::kTokenType), {}}}, nullptr},
-    {"0x27 in token", "a'a", 3, {{Item("a'a", Item::kTokenType), {}}}, nullptr},
+    {"0x23 in token", "a#a", 3, {{Item(Item::token, "a#a"), {}}}, nullptr},
+    {"0x24 in token", "a$a", 3, {{Item(Item::token, "a$a"), {}}}, nullptr},
+    {"0x25 in token", "a%a", 3, {{Item(Item::token, "a%a"), {}}}, nullptr},
+    {"0x26 in token", "a&a", 3, {{Item(Item::token, "a&a"), {}}}, nullptr},
+    {"0x27 in token", "a'a", 3, {{Item(Item::token, "a'a"), {}}}, nullptr},
     {"0x28 in token", "a(a", 3, std::nullopt, nullptr},
     {"0x29 in token", "a)a", 3, std::nullopt, nullptr},
-    {"0x2a in token", "a*a", 3, {{Item("a*a", Item::kTokenType), {}}}, nullptr},
-    {"0x2b in token", "a+a", 3, {{Item("a+a", Item::kTokenType), {}}}, nullptr},
+    {"0x2a in token", "a*a", 3, {{Item(Item::token, "a*a"), {}}}, nullptr},
+    {"0x2b in token", "a+a", 3, {{Item(Item::token, "a+a"), {}}}, nullptr},
     {"0x2c in token", "a,a", 3, std::nullopt, nullptr},
-    {"0x2d in token", "a-a", 3, {{Item("a-a", Item::kTokenType), {}}}, nullptr},
-    {"0x2e in token", "a.a", 3, {{Item("a.a", Item::kTokenType), {}}}, nullptr},
-    {"0x2f in token", "a/a", 3, {{Item("a/a", Item::kTokenType), {}}}, nullptr},
-    {"0x30 in token", "a0a", 3, {{Item("a0a", Item::kTokenType), {}}}, nullptr},
-    {"0x31 in token", "a1a", 3, {{Item("a1a", Item::kTokenType), {}}}, nullptr},
-    {"0x32 in token", "a2a", 3, {{Item("a2a", Item::kTokenType), {}}}, nullptr},
-    {"0x33 in token", "a3a", 3, {{Item("a3a", Item::kTokenType), {}}}, nullptr},
-    {"0x34 in token", "a4a", 3, {{Item("a4a", Item::kTokenType), {}}}, nullptr},
-    {"0x35 in token", "a5a", 3, {{Item("a5a", Item::kTokenType), {}}}, nullptr},
-    {"0x36 in token", "a6a", 3, {{Item("a6a", Item::kTokenType), {}}}, nullptr},
-    {"0x37 in token", "a7a", 3, {{Item("a7a", Item::kTokenType), {}}}, nullptr},
-    {"0x38 in token", "a8a", 3, {{Item("a8a", Item::kTokenType), {}}}, nullptr},
-    {"0x39 in token", "a9a", 3, {{Item("a9a", Item::kTokenType), {}}}, nullptr},
-    {"0x3a in token", "a:a", 3, {{Item("a:a", Item::kTokenType), {}}}, nullptr},
+    {"0x2d in token", "a-a", 3, {{Item(Item::token, "a-a"), {}}}, nullptr},
+    {"0x2e in token", "a.a", 3, {{Item(Item::token, "a.a"), {}}}, nullptr},
+    {"0x2f in token", "a/a", 3, {{Item(Item::token, "a/a"), {}}}, nullptr},
+    {"0x30 in token", "a0a", 3, {{Item(Item::token, "a0a"), {}}}, nullptr},
+    {"0x31 in token", "a1a", 3, {{Item(Item::token, "a1a"), {}}}, nullptr},
+    {"0x32 in token", "a2a", 3, {{Item(Item::token, "a2a"), {}}}, nullptr},
+    {"0x33 in token", "a3a", 3, {{Item(Item::token, "a3a"), {}}}, nullptr},
+    {"0x34 in token", "a4a", 3, {{Item(Item::token, "a4a"), {}}}, nullptr},
+    {"0x35 in token", "a5a", 3, {{Item(Item::token, "a5a"), {}}}, nullptr},
+    {"0x36 in token", "a6a", 3, {{Item(Item::token, "a6a"), {}}}, nullptr},
+    {"0x37 in token", "a7a", 3, {{Item(Item::token, "a7a"), {}}}, nullptr},
+    {"0x38 in token", "a8a", 3, {{Item(Item::token, "a8a"), {}}}, nullptr},
+    {"0x39 in token", "a9a", 3, {{Item(Item::token, "a9a"), {}}}, nullptr},
+    {"0x3a in token", "a:a", 3, {{Item(Item::token, "a:a"), {}}}, nullptr},
     {"0x3b in token",
      "a;a",
      3,
-     {{Item("a", Item::kTokenType), {BooleanParam("a", true)}}},
+     {{Item(Item::token, "a"), {BooleanParam("a", true)}}},
      nullptr},
     {"0x3c in token", "a<a", 3, std::nullopt, nullptr},
     {"0x3d in token", "a=a", 3, std::nullopt, nullptr},
     {"0x3e in token", "a>a", 3, std::nullopt, nullptr},
     {"0x3f in token", "a?a", 3, std::nullopt, nullptr},
     {"0x40 in token", "a@a", 3, std::nullopt, nullptr},
-    {"0x41 in token", "aAa", 3, {{Item("aAa", Item::kTokenType), {}}}, nullptr},
-    {"0x42 in token", "aBa", 3, {{Item("aBa", Item::kTokenType), {}}}, nullptr},
-    {"0x43 in token", "aCa", 3, {{Item("aCa", Item::kTokenType), {}}}, nullptr},
-    {"0x44 in token", "aDa", 3, {{Item("aDa", Item::kTokenType), {}}}, nullptr},
-    {"0x45 in token", "aEa", 3, {{Item("aEa", Item::kTokenType), {}}}, nullptr},
-    {"0x46 in token", "aFa", 3, {{Item("aFa", Item::kTokenType), {}}}, nullptr},
-    {"0x47 in token", "aGa", 3, {{Item("aGa", Item::kTokenType), {}}}, nullptr},
-    {"0x48 in token", "aHa", 3, {{Item("aHa", Item::kTokenType), {}}}, nullptr},
-    {"0x49 in token", "aIa", 3, {{Item("aIa", Item::kTokenType), {}}}, nullptr},
-    {"0x4a in token", "aJa", 3, {{Item("aJa", Item::kTokenType), {}}}, nullptr},
-    {"0x4b in token", "aKa", 3, {{Item("aKa", Item::kTokenType), {}}}, nullptr},
-    {"0x4c in token", "aLa", 3, {{Item("aLa", Item::kTokenType), {}}}, nullptr},
-    {"0x4d in token", "aMa", 3, {{Item("aMa", Item::kTokenType), {}}}, nullptr},
-    {"0x4e in token", "aNa", 3, {{Item("aNa", Item::kTokenType), {}}}, nullptr},
-    {"0x4f in token", "aOa", 3, {{Item("aOa", Item::kTokenType), {}}}, nullptr},
-    {"0x50 in token", "aPa", 3, {{Item("aPa", Item::kTokenType), {}}}, nullptr},
-    {"0x51 in token", "aQa", 3, {{Item("aQa", Item::kTokenType), {}}}, nullptr},
-    {"0x52 in token", "aRa", 3, {{Item("aRa", Item::kTokenType), {}}}, nullptr},
-    {"0x53 in token", "aSa", 3, {{Item("aSa", Item::kTokenType), {}}}, nullptr},
-    {"0x54 in token", "aTa", 3, {{Item("aTa", Item::kTokenType), {}}}, nullptr},
-    {"0x55 in token", "aUa", 3, {{Item("aUa", Item::kTokenType), {}}}, nullptr},
-    {"0x56 in token", "aVa", 3, {{Item("aVa", Item::kTokenType), {}}}, nullptr},
-    {"0x57 in token", "aWa", 3, {{Item("aWa", Item::kTokenType), {}}}, nullptr},
-    {"0x58 in token", "aXa", 3, {{Item("aXa", Item::kTokenType), {}}}, nullptr},
-    {"0x59 in token", "aYa", 3, {{Item("aYa", Item::kTokenType), {}}}, nullptr},
-    {"0x5a in token", "aZa", 3, {{Item("aZa", Item::kTokenType), {}}}, nullptr},
+    {"0x41 in token", "aAa", 3, {{Item(Item::token, "aAa"), {}}}, nullptr},
+    {"0x42 in token", "aBa", 3, {{Item(Item::token, "aBa"), {}}}, nullptr},
+    {"0x43 in token", "aCa", 3, {{Item(Item::token, "aCa"), {}}}, nullptr},
+    {"0x44 in token", "aDa", 3, {{Item(Item::token, "aDa"), {}}}, nullptr},
+    {"0x45 in token", "aEa", 3, {{Item(Item::token, "aEa"), {}}}, nullptr},
+    {"0x46 in token", "aFa", 3, {{Item(Item::token, "aFa"), {}}}, nullptr},
+    {"0x47 in token", "aGa", 3, {{Item(Item::token, "aGa"), {}}}, nullptr},
+    {"0x48 in token", "aHa", 3, {{Item(Item::token, "aHa"), {}}}, nullptr},
+    {"0x49 in token", "aIa", 3, {{Item(Item::token, "aIa"), {}}}, nullptr},
+    {"0x4a in token", "aJa", 3, {{Item(Item::token, "aJa"), {}}}, nullptr},
+    {"0x4b in token", "aKa", 3, {{Item(Item::token, "aKa"), {}}}, nullptr},
+    {"0x4c in token", "aLa", 3, {{Item(Item::token, "aLa"), {}}}, nullptr},
+    {"0x4d in token", "aMa", 3, {{Item(Item::token, "aMa"), {}}}, nullptr},
+    {"0x4e in token", "aNa", 3, {{Item(Item::token, "aNa"), {}}}, nullptr},
+    {"0x4f in token", "aOa", 3, {{Item(Item::token, "aOa"), {}}}, nullptr},
+    {"0x50 in token", "aPa", 3, {{Item(Item::token, "aPa"), {}}}, nullptr},
+    {"0x51 in token", "aQa", 3, {{Item(Item::token, "aQa"), {}}}, nullptr},
+    {"0x52 in token", "aRa", 3, {{Item(Item::token, "aRa"), {}}}, nullptr},
+    {"0x53 in token", "aSa", 3, {{Item(Item::token, "aSa"), {}}}, nullptr},
+    {"0x54 in token", "aTa", 3, {{Item(Item::token, "aTa"), {}}}, nullptr},
+    {"0x55 in token", "aUa", 3, {{Item(Item::token, "aUa"), {}}}, nullptr},
+    {"0x56 in token", "aVa", 3, {{Item(Item::token, "aVa"), {}}}, nullptr},
+    {"0x57 in token", "aWa", 3, {{Item(Item::token, "aWa"), {}}}, nullptr},
+    {"0x58 in token", "aXa", 3, {{Item(Item::token, "aXa"), {}}}, nullptr},
+    {"0x59 in token", "aYa", 3, {{Item(Item::token, "aYa"), {}}}, nullptr},
+    {"0x5a in token", "aZa", 3, {{Item(Item::token, "aZa"), {}}}, nullptr},
     {"0x5b in token", "a[a", 3, std::nullopt, nullptr},
     {"0x5c in token", "a\\a", 3, std::nullopt, nullptr},
     {"0x5d in token", "a]a", 3, std::nullopt, nullptr},
-    {"0x5e in token", "a^a", 3, {{Item("a^a", Item::kTokenType), {}}}, nullptr},
-    {"0x5f in token", "a_a", 3, {{Item("a_a", Item::kTokenType), {}}}, nullptr},
-    {"0x60 in token", "a`a", 3, {{Item("a`a", Item::kTokenType), {}}}, nullptr},
-    {"0x61 in token", "aaa", 3, {{Item("aaa", Item::kTokenType), {}}}, nullptr},
-    {"0x62 in token", "aba", 3, {{Item("aba", Item::kTokenType), {}}}, nullptr},
-    {"0x63 in token", "aca", 3, {{Item("aca", Item::kTokenType), {}}}, nullptr},
-    {"0x64 in token", "ada", 3, {{Item("ada", Item::kTokenType), {}}}, nullptr},
-    {"0x65 in token", "aea", 3, {{Item("aea", Item::kTokenType), {}}}, nullptr},
-    {"0x66 in token", "afa", 3, {{Item("afa", Item::kTokenType), {}}}, nullptr},
-    {"0x67 in token", "aga", 3, {{Item("aga", Item::kTokenType), {}}}, nullptr},
-    {"0x68 in token", "aha", 3, {{Item("aha", Item::kTokenType), {}}}, nullptr},
-    {"0x69 in token", "aia", 3, {{Item("aia", Item::kTokenType), {}}}, nullptr},
-    {"0x6a in token", "aja", 3, {{Item("aja", Item::kTokenType), {}}}, nullptr},
-    {"0x6b in token", "aka", 3, {{Item("aka", Item::kTokenType), {}}}, nullptr},
-    {"0x6c in token", "ala", 3, {{Item("ala", Item::kTokenType), {}}}, nullptr},
-    {"0x6d in token", "ama", 3, {{Item("ama", Item::kTokenType), {}}}, nullptr},
-    {"0x6e in token", "ana", 3, {{Item("ana", Item::kTokenType), {}}}, nullptr},
-    {"0x6f in token", "aoa", 3, {{Item("aoa", Item::kTokenType), {}}}, nullptr},
-    {"0x70 in token", "apa", 3, {{Item("apa", Item::kTokenType), {}}}, nullptr},
-    {"0x71 in token", "aqa", 3, {{Item("aqa", Item::kTokenType), {}}}, nullptr},
-    {"0x72 in token", "ara", 3, {{Item("ara", Item::kTokenType), {}}}, nullptr},
-    {"0x73 in token", "asa", 3, {{Item("asa", Item::kTokenType), {}}}, nullptr},
-    {"0x74 in token", "ata", 3, {{Item("ata", Item::kTokenType), {}}}, nullptr},
-    {"0x75 in token", "aua", 3, {{Item("aua", Item::kTokenType), {}}}, nullptr},
-    {"0x76 in token", "ava", 3, {{Item("ava", Item::kTokenType), {}}}, nullptr},
-    {"0x77 in token", "awa", 3, {{Item("awa", Item::kTokenType), {}}}, nullptr},
-    {"0x78 in token", "axa", 3, {{Item("axa", Item::kTokenType), {}}}, nullptr},
-    {"0x79 in token", "aya", 3, {{Item("aya", Item::kTokenType), {}}}, nullptr},
-    {"0x7a in token", "aza", 3, {{Item("aza", Item::kTokenType), {}}}, nullptr},
+    {"0x5e in token", "a^a", 3, {{Item(Item::token, "a^a"), {}}}, nullptr},
+    {"0x5f in token", "a_a", 3, {{Item(Item::token, "a_a"), {}}}, nullptr},
+    {"0x60 in token", "a`a", 3, {{Item(Item::token, "a`a"), {}}}, nullptr},
+    {"0x61 in token", "aaa", 3, {{Item(Item::token, "aaa"), {}}}, nullptr},
+    {"0x62 in token", "aba", 3, {{Item(Item::token, "aba"), {}}}, nullptr},
+    {"0x63 in token", "aca", 3, {{Item(Item::token, "aca"), {}}}, nullptr},
+    {"0x64 in token", "ada", 3, {{Item(Item::token, "ada"), {}}}, nullptr},
+    {"0x65 in token", "aea", 3, {{Item(Item::token, "aea"), {}}}, nullptr},
+    {"0x66 in token", "afa", 3, {{Item(Item::token, "afa"), {}}}, nullptr},
+    {"0x67 in token", "aga", 3, {{Item(Item::token, "aga"), {}}}, nullptr},
+    {"0x68 in token", "aha", 3, {{Item(Item::token, "aha"), {}}}, nullptr},
+    {"0x69 in token", "aia", 3, {{Item(Item::token, "aia"), {}}}, nullptr},
+    {"0x6a in token", "aja", 3, {{Item(Item::token, "aja"), {}}}, nullptr},
+    {"0x6b in token", "aka", 3, {{Item(Item::token, "aka"), {}}}, nullptr},
+    {"0x6c in token", "ala", 3, {{Item(Item::token, "ala"), {}}}, nullptr},
+    {"0x6d in token", "ama", 3, {{Item(Item::token, "ama"), {}}}, nullptr},
+    {"0x6e in token", "ana", 3, {{Item(Item::token, "ana"), {}}}, nullptr},
+    {"0x6f in token", "aoa", 3, {{Item(Item::token, "aoa"), {}}}, nullptr},
+    {"0x70 in token", "apa", 3, {{Item(Item::token, "apa"), {}}}, nullptr},
+    {"0x71 in token", "aqa", 3, {{Item(Item::token, "aqa"), {}}}, nullptr},
+    {"0x72 in token", "ara", 3, {{Item(Item::token, "ara"), {}}}, nullptr},
+    {"0x73 in token", "asa", 3, {{Item(Item::token, "asa"), {}}}, nullptr},
+    {"0x74 in token", "ata", 3, {{Item(Item::token, "ata"), {}}}, nullptr},
+    {"0x75 in token", "aua", 3, {{Item(Item::token, "aua"), {}}}, nullptr},
+    {"0x76 in token", "ava", 3, {{Item(Item::token, "ava"), {}}}, nullptr},
+    {"0x77 in token", "awa", 3, {{Item(Item::token, "awa"), {}}}, nullptr},
+    {"0x78 in token", "axa", 3, {{Item(Item::token, "axa"), {}}}, nullptr},
+    {"0x79 in token", "aya", 3, {{Item(Item::token, "aya"), {}}}, nullptr},
+    {"0x7a in token", "aza", 3, {{Item(Item::token, "aza"), {}}}, nullptr},
     {"0x7b in token", "a{a", 3, std::nullopt, nullptr},
-    {"0x7c in token", "a|a", 3, {{Item("a|a", Item::kTokenType), {}}}, nullptr},
+    {"0x7c in token", "a|a", 3, {{Item(Item::token, "a|a"), {}}}, nullptr},
     {"0x7d in token", "a}a", 3, std::nullopt, nullptr},
-    {"0x7e in token", "a~a", 3, {{Item("a~a", Item::kTokenType), {}}}, nullptr},
+    {"0x7e in token", "a~a", 3, {{Item(Item::token, "a~a"), {}}}, nullptr},
     {"0x7f in token", "a\177a", 3, std::nullopt, nullptr},
     {"0x00 starting a token", "\000a", 2, std::nullopt, nullptr},
     {"0x01 starting a token", "\001a", 2, std::nullopt, nullptr},
@@ -2191,11 +2579,7 @@
     {"0x1d starting a token", "\035a", 2, std::nullopt, nullptr},
     {"0x1e starting a token", "\036a", 2, std::nullopt, nullptr},
     {"0x1f starting a token", "\037a", 2, std::nullopt, nullptr},
-    {"0x20 starting a token",
-     " a",
-     2,
-     {{Item("a", Item::kTokenType), {}}},
-     "a"},
+    {"0x20 starting a token", " a", 2, {{Item(Item::token, "a"), {}}}, "a"},
     {"0x21 starting a token", "!a", 2, std::nullopt, nullptr},
     {"0x22 starting a token", "\"a", 2, std::nullopt, nullptr},
     {"0x23 starting a token", "#a", 2, std::nullopt, nullptr},
@@ -2208,7 +2592,7 @@
     {"0x2a starting a token",
      "*a",
      2,
-     {{Item("*a", Item::kTokenType), {}}},
+     {{Item(Item::token, "*a"), {}}},
      nullptr},
     {"0x2b starting a token", "+a", 2, std::nullopt, nullptr},
     {"0x2c starting a token", ",a", 2, std::nullopt, nullptr},
@@ -2235,132 +2619,132 @@
     {"0x41 starting a token",
      "Aa",
      2,
-     {{Item("Aa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Aa"), {}}},
      nullptr},
     {"0x42 starting a token",
      "Ba",
      2,
-     {{Item("Ba", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ba"), {}}},
      nullptr},
     {"0x43 starting a token",
      "Ca",
      2,
-     {{Item("Ca", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ca"), {}}},
      nullptr},
     {"0x44 starting a token",
      "Da",
      2,
-     {{Item("Da", Item::kTokenType), {}}},
+     {{Item(Item::token, "Da"), {}}},
      nullptr},
     {"0x45 starting a token",
      "Ea",
      2,
-     {{Item("Ea", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ea"), {}}},
      nullptr},
     {"0x46 starting a token",
      "Fa",
      2,
-     {{Item("Fa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Fa"), {}}},
      nullptr},
     {"0x47 starting a token",
      "Ga",
      2,
-     {{Item("Ga", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ga"), {}}},
      nullptr},
     {"0x48 starting a token",
      "Ha",
      2,
-     {{Item("Ha", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ha"), {}}},
      nullptr},
     {"0x49 starting a token",
      "Ia",
      2,
-     {{Item("Ia", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ia"), {}}},
      nullptr},
     {"0x4a starting a token",
      "Ja",
      2,
-     {{Item("Ja", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ja"), {}}},
      nullptr},
     {"0x4b starting a token",
      "Ka",
      2,
-     {{Item("Ka", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ka"), {}}},
      nullptr},
     {"0x4c starting a token",
      "La",
      2,
-     {{Item("La", Item::kTokenType), {}}},
+     {{Item(Item::token, "La"), {}}},
      nullptr},
     {"0x4d starting a token",
      "Ma",
      2,
-     {{Item("Ma", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ma"), {}}},
      nullptr},
     {"0x4e starting a token",
      "Na",
      2,
-     {{Item("Na", Item::kTokenType), {}}},
+     {{Item(Item::token, "Na"), {}}},
      nullptr},
     {"0x4f starting a token",
      "Oa",
      2,
-     {{Item("Oa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Oa"), {}}},
      nullptr},
     {"0x50 starting a token",
      "Pa",
      2,
-     {{Item("Pa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Pa"), {}}},
      nullptr},
     {"0x51 starting a token",
      "Qa",
      2,
-     {{Item("Qa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Qa"), {}}},
      nullptr},
     {"0x52 starting a token",
      "Ra",
      2,
-     {{Item("Ra", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ra"), {}}},
      nullptr},
     {"0x53 starting a token",
      "Sa",
      2,
-     {{Item("Sa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Sa"), {}}},
      nullptr},
     {"0x54 starting a token",
      "Ta",
      2,
-     {{Item("Ta", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ta"), {}}},
      nullptr},
     {"0x55 starting a token",
      "Ua",
      2,
-     {{Item("Ua", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ua"), {}}},
      nullptr},
     {"0x56 starting a token",
      "Va",
      2,
-     {{Item("Va", Item::kTokenType), {}}},
+     {{Item(Item::token, "Va"), {}}},
      nullptr},
     {"0x57 starting a token",
      "Wa",
      2,
-     {{Item("Wa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Wa"), {}}},
      nullptr},
     {"0x58 starting a token",
      "Xa",
      2,
-     {{Item("Xa", Item::kTokenType), {}}},
+     {{Item(Item::token, "Xa"), {}}},
      nullptr},
     {"0x59 starting a token",
      "Ya",
      2,
-     {{Item("Ya", Item::kTokenType), {}}},
+     {{Item(Item::token, "Ya"), {}}},
      nullptr},
     {"0x5a starting a token",
      "Za",
      2,
-     {{Item("Za", Item::kTokenType), {}}},
+     {{Item(Item::token, "Za"), {}}},
      nullptr},
     {"0x5b starting a token", "[a", 2, std::nullopt, nullptr},
     {"0x5c starting a token", "\\a", 2, std::nullopt, nullptr},
@@ -2371,132 +2755,132 @@
     {"0x61 starting a token",
      "aa",
      2,
-     {{Item("aa", Item::kTokenType), {}}},
+     {{Item(Item::token, "aa"), {}}},
      nullptr},
     {"0x62 starting a token",
      "ba",
      2,
-     {{Item("ba", Item::kTokenType), {}}},
+     {{Item(Item::token, "ba"), {}}},
      nullptr},
     {"0x63 starting a token",
      "ca",
      2,
-     {{Item("ca", Item::kTokenType), {}}},
+     {{Item(Item::token, "ca"), {}}},
      nullptr},
     {"0x64 starting a token",
      "da",
      2,
-     {{Item("da", Item::kTokenType), {}}},
+     {{Item(Item::token, "da"), {}}},
      nullptr},
     {"0x65 starting a token",
      "ea",
      2,
-     {{Item("ea", Item::kTokenType), {}}},
+     {{Item(Item::token, "ea"), {}}},
      nullptr},
     {"0x66 starting a token",
      "fa",
      2,
-     {{Item("fa", Item::kTokenType), {}}},
+     {{Item(Item::token, "fa"), {}}},
      nullptr},
     {"0x67 starting a token",
      "ga",
      2,
-     {{Item("ga", Item::kTokenType), {}}},
+     {{Item(Item::token, "ga"), {}}},
      nullptr},
     {"0x68 starting a token",
      "ha",
      2,
-     {{Item("ha", Item::kTokenType), {}}},
+     {{Item(Item::token, "ha"), {}}},
      nullptr},
     {"0x69 starting a token",
      "ia",
      2,
-     {{Item("ia", Item::kTokenType), {}}},
+     {{Item(Item::token, "ia"), {}}},
      nullptr},
     {"0x6a starting a token",
      "ja",
      2,
-     {{Item("ja", Item::kTokenType), {}}},
+     {{Item(Item::token, "ja"), {}}},
      nullptr},
     {"0x6b starting a token",
      "ka",
      2,
-     {{Item("ka", Item::kTokenType), {}}},
+     {{Item(Item::token, "ka"), {}}},
      nullptr},
     {"0x6c starting a token",
      "la",
      2,
-     {{Item("la", Item::kTokenType), {}}},
+     {{Item(Item::token, "la"), {}}},
      nullptr},
     {"0x6d starting a token",
      "ma",
      2,
-     {{Item("ma", Item::kTokenType), {}}},
+     {{Item(Item::token, "ma"), {}}},
      nullptr},
     {"0x6e starting a token",
      "na",
      2,
-     {{Item("na", Item::kTokenType), {}}},
+     {{Item(Item::token, "na"), {}}},
      nullptr},
     {"0x6f starting a token",
      "oa",
      2,
-     {{Item("oa", Item::kTokenType), {}}},
+     {{Item(Item::token, "oa"), {}}},
      nullptr},
     {"0x70 starting a token",
      "pa",
      2,
-     {{Item("pa", Item::kTokenType), {}}},
+     {{Item(Item::token, "pa"), {}}},
      nullptr},
     {"0x71 starting a token",
      "qa",
      2,
-     {{Item("qa", Item::kTokenType), {}}},
+     {{Item(Item::token, "qa"), {}}},
      nullptr},
     {"0x72 starting a token",
      "ra",
      2,
-     {{Item("ra", Item::kTokenType), {}}},
+     {{Item(Item::token, "ra"), {}}},
      nullptr},
     {"0x73 starting a token",
      "sa",
      2,
-     {{Item("sa", Item::kTokenType), {}}},
+     {{Item(Item::token, "sa"), {}}},
      nullptr},
     {"0x74 starting a token",
      "ta",
      2,
-     {{Item("ta", Item::kTokenType), {}}},
+     {{Item(Item::token, "ta"), {}}},
      nullptr},
     {"0x75 starting a token",
      "ua",
      2,
-     {{Item("ua", Item::kTokenType), {}}},
+     {{Item(Item::token, "ua"), {}}},
      nullptr},
     {"0x76 starting a token",
      "va",
      2,
-     {{Item("va", Item::kTokenType), {}}},
+     {{Item(Item::token, "va"), {}}},
      nullptr},
     {"0x77 starting a token",
      "wa",
      2,
-     {{Item("wa", Item::kTokenType), {}}},
+     {{Item(Item::token, "wa"), {}}},
      nullptr},
     {"0x78 starting a token",
      "xa",
      2,
-     {{Item("xa", Item::kTokenType), {}}},
+     {{Item(Item::token, "xa"), {}}},
      nullptr},
     {"0x79 starting a token",
      "ya",
      2,
-     {{Item("ya", Item::kTokenType), {}}},
+     {{Item(Item::token, "ya"), {}}},
      nullptr},
     {"0x7a starting a token",
      "za",
      2,
-     {{Item("za", Item::kTokenType), {}}},
+     {{Item(Item::token, "za"), {}}},
      nullptr},
     {"0x7b starting a token", "{a", 2, std::nullopt, nullptr},
     {"0x7c starting a token", "|a", 2, std::nullopt, nullptr},
@@ -2507,17 +2891,17 @@
     {"basic token - item",
      "a_b-c.d3:f%00/*",
      15,
-     {{Item("a_b-c.d3:f%00/*", Item::kTokenType), {}}},
+     {{Item(Item::token, "a_b-c.d3:f%00/*"), {}}},
      nullptr},
     {"token with capitals - item",
      "fooBar",
      6,
-     {{Item("fooBar", Item::kTokenType), {}}},
+     {{Item(Item::token, "fooBar"), {}}},
      nullptr},
     {"token starting with capitals - item",
      "FooBar",
      6,
-     {{Item("FooBar", Item::kTokenType), {}}},
+     {{Item(Item::token, "FooBar"), {}}},
      nullptr},
 };
 
@@ -2534,43 +2918,43 @@
     {"Example-StrListHeader",
      "\"foo\", \"bar\", \"It was the best of times.\"",
      41,
-     {{{Item("foo"), {}},
-       {Item("bar"), {}},
-       {Item("It was the best of times."), {}}}},
+     {{{Item(Item::string, "foo"), {}},
+       {Item(Item::string, "bar"), {}},
+       {Item(Item::string, "It was the best of times."), {}}}},
      nullptr},
     {"Example-Hdr (list on one line)",
      "foo, bar",
      8,
-     {{{Item("foo", Item::kTokenType), {}},
-       {Item("bar", Item::kTokenType), {}}}},
+     {{{Item(Item::token, "foo"), {}}, {Item(Item::token, "bar"), {}}}},
      nullptr},
     {"Example-Hdr (list on two lines)",
      "foo, bar",
      8,
-     {{{Item("foo", Item::kTokenType), {}},
-       {Item("bar", Item::kTokenType), {}}}},
+     {{{Item(Item::token, "foo"), {}}, {Item(Item::token, "bar"), {}}}},
      "foo, bar"},
     {"Example-StrListListHeader",
      "(\"foo\" \"bar\"), (\"baz\"), (\"bat\" \"one\"), ()",
      41,
-     {{{{{Item("foo"), {}}, {Item("bar"), {}}}, {}},
-       {{{Item("baz"), {}}}, {}},
-       {{{Item("bat"), {}}, {Item("one"), {}}}, {}},
+     {{{{{Item(Item::string, "foo"), {}}, {Item(Item::string, "bar"), {}}}, {}},
+       {{{Item(Item::string, "baz"), {}}}, {}},
+       {{{Item(Item::string, "bat"), {}}, {Item(Item::string, "one"), {}}}, {}},
        {std::vector<ParameterizedItem>(), {}}}},
      nullptr},
     {"Example-ListListParam",
      "(\"foo\"; a=1;b=2);lvl=5, (\"bar\" \"baz\");lvl=1",
      43,
-     {{{{{Item("foo"), {Param("a", 1), Param("b", 2)}}}, {Param("lvl", 5)}},
-       {{{Item("bar"), {}}, {Item("baz"), {}}}, {Param("lvl", 1)}}}},
+     {{{{{Item(Item::string, "foo"), {Param("a", 1), Param("b", 2)}}},
+        {Param("lvl", 5)}},
+       {{{Item(Item::string, "bar"), {}}, {Item(Item::string, "baz"), {}}},
+        {Param("lvl", 1)}}}},
      "(\"foo\";a=1;b=2);lvl=5, (\"bar\" \"baz\");lvl=1"},
     {"Example-ParamListHeader",
      "abc;a=1;b=2; cde_456, (ghi;jk=4 l);q=\"9\";r=w",
      44,
-     {{{Item("abc", Item::kTokenType),
+     {{{Item(Item::token, "abc"),
         {Param("a", 1), Param("b", 2), BooleanParam("cde_456", true)}},
-       {{{Item("ghi", Item::kTokenType), {Param("jk", 4)}},
-         {Item("l", Item::kTokenType), {}}},
+       {{{Item(Item::token, "ghi"), {Param("jk", 4)}},
+         {Item(Item::token, "l"), {}}},
         {Param("q", "9"), TokenParam("r", "w")}}}},
      "abc;a=1;b=2;cde_456, (ghi;jk=4 l);q=\"9\";r=w"},
     // key-generated.json
@@ -2652,76 +3036,76 @@
     {"0x2a in parameterised list key",
      "foo; a*a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a*a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a*a", 1)}}}},
      "foo;a*a=1"},
     {"0x2b in parameterised list key", "foo; a+a=1", 10, std::nullopt, nullptr},
     {"0x2c in parameterised list key", "foo; a,a=1", 10, std::nullopt, nullptr},
     {"0x2d in parameterised list key",
      "foo; a-a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a-a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a-a", 1)}}}},
      "foo;a-a=1"},
     {"0x2e in parameterised list key",
      "foo; a.a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a.a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a.a", 1)}}}},
      "foo;a.a=1"},
     {"0x2f in parameterised list key", "foo; a/a=1", 10, std::nullopt, nullptr},
     {"0x30 in parameterised list key",
      "foo; a0a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a0a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a0a", 1)}}}},
      "foo;a0a=1"},
     {"0x31 in parameterised list key",
      "foo; a1a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a1a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a1a", 1)}}}},
      "foo;a1a=1"},
     {"0x32 in parameterised list key",
      "foo; a2a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a2a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a2a", 1)}}}},
      "foo;a2a=1"},
     {"0x33 in parameterised list key",
      "foo; a3a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a3a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a3a", 1)}}}},
      "foo;a3a=1"},
     {"0x34 in parameterised list key",
      "foo; a4a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a4a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a4a", 1)}}}},
      "foo;a4a=1"},
     {"0x35 in parameterised list key",
      "foo; a5a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a5a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a5a", 1)}}}},
      "foo;a5a=1"},
     {"0x36 in parameterised list key",
      "foo; a6a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a6a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a6a", 1)}}}},
      "foo;a6a=1"},
     {"0x37 in parameterised list key",
      "foo; a7a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a7a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a7a", 1)}}}},
      "foo;a7a=1"},
     {"0x38 in parameterised list key",
      "foo; a8a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a8a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a8a", 1)}}}},
      "foo;a8a=1"},
     {"0x39 in parameterised list key",
      "foo; a9a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a9a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a9a", 1)}}}},
      "foo;a9a=1"},
     {"0x3a in parameterised list key", "foo; a:a=1", 10, std::nullopt, nullptr},
     {"0x3b in parameterised list key",
      "foo; a;a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a", 1)}}}},
      "foo;a=1"},
     {"0x3c in parameterised list key", "foo; a<a=1", 10, std::nullopt, nullptr},
     {"0x3d in parameterised list key", "foo; a=a=1", 10, std::nullopt, nullptr},
@@ -2762,138 +3146,138 @@
     {"0x5f in parameterised list key",
      "foo; a_a=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("a_a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a_a", 1)}}}},
      "foo;a_a=1"},
     {"0x60 in parameterised list key", "foo; a`a=1", 10, std::nullopt, nullptr},
     {"0x61 in parameterised list key",
      "foo; aaa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aaa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aaa", 1)}}}},
      "foo;aaa=1"},
     {"0x62 in parameterised list key",
      "foo; aba=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aba", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aba", 1)}}}},
      "foo;aba=1"},
     {"0x63 in parameterised list key",
      "foo; aca=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aca", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aca", 1)}}}},
      "foo;aca=1"},
     {"0x64 in parameterised list key",
      "foo; ada=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ada", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ada", 1)}}}},
      "foo;ada=1"},
     {"0x65 in parameterised list key",
      "foo; aea=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aea", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aea", 1)}}}},
      "foo;aea=1"},
     {"0x66 in parameterised list key",
      "foo; afa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("afa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("afa", 1)}}}},
      "foo;afa=1"},
     {"0x67 in parameterised list key",
      "foo; aga=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aga", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aga", 1)}}}},
      "foo;aga=1"},
     {"0x68 in parameterised list key",
      "foo; aha=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aha", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aha", 1)}}}},
      "foo;aha=1"},
     {"0x69 in parameterised list key",
      "foo; aia=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aia", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aia", 1)}}}},
      "foo;aia=1"},
     {"0x6a in parameterised list key",
      "foo; aja=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aja", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aja", 1)}}}},
      "foo;aja=1"},
     {"0x6b in parameterised list key",
      "foo; aka=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aka", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aka", 1)}}}},
      "foo;aka=1"},
     {"0x6c in parameterised list key",
      "foo; ala=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ala", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ala", 1)}}}},
      "foo;ala=1"},
     {"0x6d in parameterised list key",
      "foo; ama=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ama", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ama", 1)}}}},
      "foo;ama=1"},
     {"0x6e in parameterised list key",
      "foo; ana=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ana", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ana", 1)}}}},
      "foo;ana=1"},
     {"0x6f in parameterised list key",
      "foo; aoa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aoa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aoa", 1)}}}},
      "foo;aoa=1"},
     {"0x70 in parameterised list key",
      "foo; apa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("apa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("apa", 1)}}}},
      "foo;apa=1"},
     {"0x71 in parameterised list key",
      "foo; aqa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aqa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aqa", 1)}}}},
      "foo;aqa=1"},
     {"0x72 in parameterised list key",
      "foo; ara=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ara", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ara", 1)}}}},
      "foo;ara=1"},
     {"0x73 in parameterised list key",
      "foo; asa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("asa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("asa", 1)}}}},
      "foo;asa=1"},
     {"0x74 in parameterised list key",
      "foo; ata=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ata", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ata", 1)}}}},
      "foo;ata=1"},
     {"0x75 in parameterised list key",
      "foo; aua=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aua", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aua", 1)}}}},
      "foo;aua=1"},
     {"0x76 in parameterised list key",
      "foo; ava=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("ava", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ava", 1)}}}},
      "foo;ava=1"},
     {"0x77 in parameterised list key",
      "foo; awa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("awa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("awa", 1)}}}},
      "foo;awa=1"},
     {"0x78 in parameterised list key",
      "foo; axa=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("axa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("axa", 1)}}}},
      "foo;axa=1"},
     {"0x79 in parameterised list key",
      "foo; aya=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aya", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aya", 1)}}}},
      "foo;aya=1"},
     {"0x7a in parameterised list key",
      "foo; aza=1",
      10,
-     {{{Item("foo", Item::kTokenType), {Param("aza", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aza", 1)}}}},
      "foo;aza=1"},
     {"0x7b in parameterised list key", "foo; a{a=1", 10, std::nullopt, nullptr},
     {"0x7c in parameterised list key", "foo; a|a=1", 10, std::nullopt, nullptr},
@@ -2968,7 +3352,7 @@
     {"0x20 starting a parameterised list key",
      "foo;  a=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a", 1)}}}},
      "foo;a=1"},
     {"0x21 starting a parameterised list key", "foo; !a=1", 9, std::nullopt,
      nullptr},
@@ -2991,7 +3375,7 @@
     {"0x2a starting a parameterised list key",
      "foo; *a=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("*a", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("*a", 1)}}}},
      "foo;*a=1"},
     {"0x2b starting a parameterised list key", "foo; +a=1", 9, std::nullopt,
      nullptr},
@@ -3104,132 +3488,132 @@
     {"0x61 starting a parameterised list key",
      "foo; aa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("aa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("aa", 1)}}}},
      "foo;aa=1"},
     {"0x62 starting a parameterised list key",
      "foo; ba=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ba", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ba", 1)}}}},
      "foo;ba=1"},
     {"0x63 starting a parameterised list key",
      "foo; ca=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ca", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ca", 1)}}}},
      "foo;ca=1"},
     {"0x64 starting a parameterised list key",
      "foo; da=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("da", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("da", 1)}}}},
      "foo;da=1"},
     {"0x65 starting a parameterised list key",
      "foo; ea=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ea", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ea", 1)}}}},
      "foo;ea=1"},
     {"0x66 starting a parameterised list key",
      "foo; fa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("fa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("fa", 1)}}}},
      "foo;fa=1"},
     {"0x67 starting a parameterised list key",
      "foo; ga=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ga", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ga", 1)}}}},
      "foo;ga=1"},
     {"0x68 starting a parameterised list key",
      "foo; ha=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ha", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ha", 1)}}}},
      "foo;ha=1"},
     {"0x69 starting a parameterised list key",
      "foo; ia=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ia", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ia", 1)}}}},
      "foo;ia=1"},
     {"0x6a starting a parameterised list key",
      "foo; ja=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ja", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ja", 1)}}}},
      "foo;ja=1"},
     {"0x6b starting a parameterised list key",
      "foo; ka=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ka", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ka", 1)}}}},
      "foo;ka=1"},
     {"0x6c starting a parameterised list key",
      "foo; la=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("la", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("la", 1)}}}},
      "foo;la=1"},
     {"0x6d starting a parameterised list key",
      "foo; ma=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ma", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ma", 1)}}}},
      "foo;ma=1"},
     {"0x6e starting a parameterised list key",
      "foo; na=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("na", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("na", 1)}}}},
      "foo;na=1"},
     {"0x6f starting a parameterised list key",
      "foo; oa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("oa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("oa", 1)}}}},
      "foo;oa=1"},
     {"0x70 starting a parameterised list key",
      "foo; pa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("pa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("pa", 1)}}}},
      "foo;pa=1"},
     {"0x71 starting a parameterised list key",
      "foo; qa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("qa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("qa", 1)}}}},
      "foo;qa=1"},
     {"0x72 starting a parameterised list key",
      "foo; ra=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ra", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ra", 1)}}}},
      "foo;ra=1"},
     {"0x73 starting a parameterised list key",
      "foo; sa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("sa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("sa", 1)}}}},
      "foo;sa=1"},
     {"0x74 starting a parameterised list key",
      "foo; ta=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ta", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ta", 1)}}}},
      "foo;ta=1"},
     {"0x75 starting a parameterised list key",
      "foo; ua=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ua", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ua", 1)}}}},
      "foo;ua=1"},
     {"0x76 starting a parameterised list key",
      "foo; va=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("va", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("va", 1)}}}},
      "foo;va=1"},
     {"0x77 starting a parameterised list key",
      "foo; wa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("wa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("wa", 1)}}}},
      "foo;wa=1"},
     {"0x78 starting a parameterised list key",
      "foo; xa=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("xa", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("xa", 1)}}}},
      "foo;xa=1"},
     {"0x79 starting a parameterised list key",
      "foo; ya=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("ya", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("ya", 1)}}}},
      "foo;ya=1"},
     {"0x7a starting a parameterised list key",
      "foo; za=1",
      9,
-     {{{Item("foo", Item::kTokenType), {Param("za", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("za", 1)}}}},
      "foo;za=1"},
     {"0x7b starting a parameterised list key", "foo; {a=1", 9, std::nullopt,
      nullptr},
@@ -3329,1030 +3713,518 @@
      "a1010, a1011, a1012, a1013, a1014, a1015, a1016, a1017, a1018, a1019, "
      "a1020, a1021, a1022, a1023",
      6056,
-     {{{Item("a0", Item::kTokenType), {}},
-       {Item("a1", Item::kTokenType), {}},
-       {Item("a2", Item::kTokenType), {}},
-       {Item("a3", Item::kTokenType), {}},
-       {Item("a4", Item::kTokenType), {}},
-       {Item("a5", Item::kTokenType), {}},
-       {Item("a6", Item::kTokenType), {}},
-       {Item("a7", Item::kTokenType), {}},
-       {Item("a8", Item::kTokenType), {}},
-       {Item("a9", Item::kTokenType), {}},
-       {Item("a10", Item::kTokenType), {}},
-       {Item("a11", Item::kTokenType), {}},
-       {Item("a12", Item::kTokenType), {}},
-       {Item("a13", Item::kTokenType), {}},
-       {Item("a14", Item::kTokenType), {}},
-       {Item("a15", Item::kTokenType), {}},
-       {Item("a16", Item::kTokenType), {}},
-       {Item("a17", Item::kTokenType), {}},
-       {Item("a18", Item::kTokenType), {}},
-       {Item("a19", Item::kTokenType), {}},
-       {Item("a20", Item::kTokenType), {}},
-       {Item("a21", Item::kTokenType), {}},
-       {Item("a22", Item::kTokenType), {}},
-       {Item("a23", Item::kTokenType), {}},
-       {Item("a24", Item::kTokenType), {}},
-       {Item("a25", Item::kTokenType), {}},
-       {Item("a26", Item::kTokenType), {}},
-       {Item("a27", Item::kTokenType), {}},
-       {Item("a28", Item::kTokenType), {}},
-       {Item("a29", Item::kTokenType), {}},
-       {Item("a30", Item::kTokenType), {}},
-       {Item("a31", Item::kTokenType), {}},
-       {Item("a32", Item::kTokenType), {}},
-       {Item("a33", Item::kTokenType), {}},
-       {Item("a34", Item::kTokenType), {}},
-       {Item("a35", Item::kTokenType), {}},
-       {Item("a36", Item::kTokenType), {}},
-       {Item("a37", Item::kTokenType), {}},
-       {Item("a38", Item::kTokenType), {}},
-       {Item("a39", Item::kTokenType), {}},
-       {Item("a40", Item::kTokenType), {}},
-       {Item("a41", Item::kTokenType), {}},
-       {Item("a42", Item::kTokenType), {}},
-       {Item("a43", Item::kTokenType), {}},
-       {Item("a44", Item::kTokenType), {}},
-       {Item("a45", Item::kTokenType), {}},
-       {Item("a46", Item::kTokenType), {}},
-       {Item("a47", Item::kTokenType), {}},
-       {Item("a48", Item::kTokenType), {}},
-       {Item("a49", Item::kTokenType), {}},
-       {Item("a50", Item::kTokenType), {}},
-       {Item("a51", Item::kTokenType), {}},
-       {Item("a52", Item::kTokenType), {}},
-       {Item("a53", Item::kTokenType), {}},
-       {Item("a54", Item::kTokenType), {}},
-       {Item("a55", Item::kTokenType), {}},
-       {Item("a56", Item::kTokenType), {}},
-       {Item("a57", Item::kTokenType), {}},
-       {Item("a58", Item::kTokenType), {}},
-       {Item("a59", Item::kTokenType), {}},
-       {Item("a60", Item::kTokenType), {}},
-       {Item("a61", Item::kTokenType), {}},
-       {Item("a62", Item::kTokenType), {}},
-       {Item("a63", Item::kTokenType), {}},
-       {Item("a64", Item::kTokenType), {}},
-       {Item("a65", Item::kTokenType), {}},
-       {Item("a66", Item::kTokenType), {}},
-       {Item("a67", Item::kTokenType), {}},
-       {Item("a68", Item::kTokenType), {}},
-       {Item("a69", Item::kTokenType), {}},
-       {Item("a70", Item::kTokenType), {}},
-       {Item("a71", Item::kTokenType), {}},
-       {Item("a72", Item::kTokenType), {}},
-       {Item("a73", Item::kTokenType), {}},
-       {Item("a74", Item::kTokenType), {}},
-       {Item("a75", Item::kTokenType), {}},
-       {Item("a76", Item::kTokenType), {}},
-       {Item("a77", Item::kTokenType), {}},
-       {Item("a78", Item::kTokenType), {}},
-       {Item("a79", Item::kTokenType), {}},
-       {Item("a80", Item::kTokenType), {}},
-       {Item("a81", Item::kTokenType), {}},
-       {Item("a82", Item::kTokenType), {}},
-       {Item("a83", Item::kTokenType), {}},
-       {Item("a84", Item::kTokenType), {}},
-       {Item("a85", Item::kTokenType), {}},
-       {Item("a86", Item::kTokenType), {}},
-       {Item("a87", Item::kTokenType), {}},
-       {Item("a88", Item::kTokenType), {}},
-       {Item("a89", Item::kTokenType), {}},
-       {Item("a90", Item::kTokenType), {}},
-       {Item("a91", Item::kTokenType), {}},
-       {Item("a92", Item::kTokenType), {}},
-       {Item("a93", Item::kTokenType), {}},
-       {Item("a94", Item::kTokenType), {}},
-       {Item("a95", Item::kTokenType), {}},
-       {Item("a96", Item::kTokenType), {}},
-       {Item("a97", Item::kTokenType), {}},
-       {Item("a98", Item::kTokenType), {}},
-       {Item("a99", Item::kTokenType), {}},
-       {Item("a100", Item::kTokenType), {}},
-       {Item("a101", Item::kTokenType), {}},
-       {Item("a102", Item::kTokenType), {}},
-       {Item("a103", Item::kTokenType), {}},
-       {Item("a104", Item::kTokenType), {}},
-       {Item("a105", Item::kTokenType), {}},
-       {Item("a106", Item::kTokenType), {}},
-       {Item("a107", Item::kTokenType), {}},
-       {Item("a108", Item::kTokenType), {}},
-       {Item("a109", Item::kTokenType), {}},
-       {Item("a110", Item::kTokenType), {}},
-       {Item("a111", Item::kTokenType), {}},
-       {Item("a112", Item::kTokenType), {}},
-       {Item("a113", Item::kTokenType), {}},
-       {Item("a114", Item::kTokenType), {}},
-       {Item("a115", Item::kTokenType), {}},
-       {Item("a116", Item::kTokenType), {}},
-       {Item("a117", Item::kTokenType), {}},
-       {Item("a118", Item::kTokenType), {}},
-       {Item("a119", Item::kTokenType), {}},
-       {Item("a120", Item::kTokenType), {}},
-       {Item("a121", Item::kTokenType), {}},
-       {Item("a122", Item::kTokenType), {}},
-       {Item("a123", Item::kTokenType), {}},
-       {Item("a124", Item::kTokenType), {}},
-       {Item("a125", Item::kTokenType), {}},
-       {Item("a126", Item::kTokenType), {}},
-       {Item("a127", Item::kTokenType), {}},
-       {Item("a128", Item::kTokenType), {}},
-       {Item("a129", Item::kTokenType), {}},
-       {Item("a130", Item::kTokenType), {}},
-       {Item("a131", Item::kTokenType), {}},
-       {Item("a132", Item::kTokenType), {}},
-       {Item("a133", Item::kTokenType), {}},
-       {Item("a134", Item::kTokenType), {}},
-       {Item("a135", Item::kTokenType), {}},
-       {Item("a136", Item::kTokenType), {}},
-       {Item("a137", Item::kTokenType), {}},
-       {Item("a138", Item::kTokenType), {}},
-       {Item("a139", Item::kTokenType), {}},
-       {Item("a140", Item::kTokenType), {}},
-       {Item("a141", Item::kTokenType), {}},
-       {Item("a142", Item::kTokenType), {}},
-       {Item("a143", Item::kTokenType), {}},
-       {Item("a144", Item::kTokenType), {}},
-       {Item("a145", Item::kTokenType), {}},
-       {Item("a146", Item::kTokenType), {}},
-       {Item("a147", Item::kTokenType), {}},
-       {Item("a148", Item::kTokenType), {}},
-       {Item("a149", Item::kTokenType), {}},
-       {Item("a150", Item::kTokenType), {}},
-       {Item("a151", Item::kTokenType), {}},
-       {Item("a152", Item::kTokenType), {}},
-       {Item("a153", Item::kTokenType), {}},
-       {Item("a154", Item::kTokenType), {}},
-       {Item("a155", Item::kTokenType), {}},
-       {Item("a156", Item::kTokenType), {}},
-       {Item("a157", Item::kTokenType), {}},
-       {Item("a158", Item::kTokenType), {}},
-       {Item("a159", Item::kTokenType), {}},
-       {Item("a160", Item::kTokenType), {}},
-       {Item("a161", Item::kTokenType), {}},
-       {Item("a162", Item::kTokenType), {}},
-       {Item("a163", Item::kTokenType), {}},
-       {Item("a164", Item::kTokenType), {}},
-       {Item("a165", Item::kTokenType), {}},
-       {Item("a166", Item::kTokenType), {}},
-       {Item("a167", Item::kTokenType), {}},
-       {Item("a168", Item::kTokenType), {}},
-       {Item("a169", Item::kTokenType), {}},
-       {Item("a170", Item::kTokenType), {}},
-       {Item("a171", Item::kTokenType), {}},
-       {Item("a172", Item::kTokenType), {}},
-       {Item("a173", Item::kTokenType), {}},
-       {Item("a174", Item::kTokenType), {}},
-       {Item("a175", Item::kTokenType), {}},
-       {Item("a176", Item::kTokenType), {}},
-       {Item("a177", Item::kTokenType), {}},
-       {Item("a178", Item::kTokenType), {}},
-       {Item("a179", Item::kTokenType), {}},
-       {Item("a180", Item::kTokenType), {}},
-       {Item("a181", Item::kTokenType), {}},
-       {Item("a182", Item::kTokenType), {}},
-       {Item("a183", Item::kTokenType), {}},
-       {Item("a184", Item::kTokenType), {}},
-       {Item("a185", Item::kTokenType), {}},
-       {Item("a186", Item::kTokenType), {}},
-       {Item("a187", Item::kTokenType), {}},
-       {Item("a188", Item::kTokenType), {}},
-       {Item("a189", Item::kTokenType), {}},
-       {Item("a190", Item::kTokenType), {}},
-       {Item("a191", Item::kTokenType), {}},
-       {Item("a192", Item::kTokenType), {}},
-       {Item("a193", Item::kTokenType), {}},
-       {Item("a194", Item::kTokenType), {}},
-       {Item("a195", Item::kTokenType), {}},
-       {Item("a196", Item::kTokenType), {}},
-       {Item("a197", Item::kTokenType), {}},
-       {Item("a198", Item::kTokenType), {}},
-       {Item("a199", Item::kTokenType), {}},
-       {Item("a200", Item::kTokenType), {}},
-       {Item("a201", Item::kTokenType), {}},
-       {Item("a202", Item::kTokenType), {}},
-       {Item("a203", Item::kTokenType), {}},
-       {Item("a204", Item::kTokenType), {}},
-       {Item("a205", Item::kTokenType), {}},
-       {Item("a206", Item::kTokenType), {}},
-       {Item("a207", Item::kTokenType), {}},
-       {Item("a208", Item::kTokenType), {}},
-       {Item("a209", Item::kTokenType), {}},
-       {Item("a210", Item::kTokenType), {}},
-       {Item("a211", Item::kTokenType), {}},
-       {Item("a212", Item::kTokenType), {}},
-       {Item("a213", Item::kTokenType), {}},
-       {Item("a214", Item::kTokenType), {}},
-       {Item("a215", Item::kTokenType), {}},
-       {Item("a216", Item::kTokenType), {}},
-       {Item("a217", Item::kTokenType), {}},
-       {Item("a218", Item::kTokenType), {}},
-       {Item("a219", Item::kTokenType), {}},
-       {Item("a220", Item::kTokenType), {}},
-       {Item("a221", Item::kTokenType), {}},
-       {Item("a222", Item::kTokenType), {}},
-       {Item("a223", Item::kTokenType), {}},
-       {Item("a224", Item::kTokenType), {}},
-       {Item("a225", Item::kTokenType), {}},
-       {Item("a226", Item::kTokenType), {}},
-       {Item("a227", Item::kTokenType), {}},
-       {Item("a228", Item::kTokenType), {}},
-       {Item("a229", Item::kTokenType), {}},
-       {Item("a230", Item::kTokenType), {}},
-       {Item("a231", Item::kTokenType), {}},
-       {Item("a232", Item::kTokenType), {}},
-       {Item("a233", Item::kTokenType), {}},
-       {Item("a234", Item::kTokenType), {}},
-       {Item("a235", Item::kTokenType), {}},
-       {Item("a236", Item::kTokenType), {}},
-       {Item("a237", Item::kTokenType), {}},
-       {Item("a238", Item::kTokenType), {}},
-       {Item("a239", Item::kTokenType), {}},
-       {Item("a240", Item::kTokenType), {}},
-       {Item("a241", Item::kTokenType), {}},
-       {Item("a242", Item::kTokenType), {}},
-       {Item("a243", Item::kTokenType), {}},
-       {Item("a244", Item::kTokenType), {}},
-       {Item("a245", Item::kTokenType), {}},
-       {Item("a246", Item::kTokenType), {}},
-       {Item("a247", Item::kTokenType), {}},
-       {Item("a248", Item::kTokenType), {}},
-       {Item("a249", Item::kTokenType), {}},
-       {Item("a250", Item::kTokenType), {}},
-       {Item("a251", Item::kTokenType), {}},
-       {Item("a252", Item::kTokenType), {}},
-       {Item("a253", Item::kTokenType), {}},
-       {Item("a254", Item::kTokenType), {}},
-       {Item("a255", Item::kTokenType), {}},
-       {Item("a256", Item::kTokenType), {}},
-       {Item("a257", Item::kTokenType), {}},
-       {Item("a258", Item::kTokenType), {}},
-       {Item("a259", Item::kTokenType), {}},
-       {Item("a260", Item::kTokenType), {}},
-       {Item("a261", Item::kTokenType), {}},
-       {Item("a262", Item::kTokenType), {}},
-       {Item("a263", Item::kTokenType), {}},
-       {Item("a264", Item::kTokenType), {}},
-       {Item("a265", Item::kTokenType), {}},
-       {Item("a266", Item::kTokenType), {}},
-       {Item("a267", Item::kTokenType), {}},
-       {Item("a268", Item::kTokenType), {}},
-       {Item("a269", Item::kTokenType), {}},
-       {Item("a270", Item::kTokenType), {}},
-       {Item("a271", Item::kTokenType), {}},
-       {Item("a272", Item::kTokenType), {}},
-       {Item("a273", Item::kTokenType), {}},
-       {Item("a274", Item::kTokenType), {}},
-       {Item("a275", Item::kTokenType), {}},
-       {Item("a276", Item::kTokenType), {}},
-       {Item("a277", Item::kTokenType), {}},
-       {Item("a278", Item::kTokenType), {}},
-       {Item("a279", Item::kTokenType), {}},
-       {Item("a280", Item::kTokenType), {}},
-       {Item("a281", Item::kTokenType), {}},
-       {Item("a282", Item::kTokenType), {}},
-       {Item("a283", Item::kTokenType), {}},
-       {Item("a284", Item::kTokenType), {}},
-       {Item("a285", Item::kTokenType), {}},
-       {Item("a286", Item::kTokenType), {}},
-       {Item("a287", Item::kTokenType), {}},
-       {Item("a288", Item::kTokenType), {}},
-       {Item("a289", Item::kTokenType), {}},
-       {Item("a290", Item::kTokenType), {}},
-       {Item("a291", Item::kTokenType), {}},
-       {Item("a292", Item::kTokenType), {}},
-       {Item("a293", Item::kTokenType), {}},
-       {Item("a294", Item::kTokenType), {}},
-       {Item("a295", Item::kTokenType), {}},
-       {Item("a296", Item::kTokenType), {}},
-       {Item("a297", Item::kTokenType), {}},
-       {Item("a298", Item::kTokenType), {}},
-       {Item("a299", Item::kTokenType), {}},
-       {Item("a300", Item::kTokenType), {}},
-       {Item("a301", Item::kTokenType), {}},
-       {Item("a302", Item::kTokenType), {}},
-       {Item("a303", Item::kTokenType), {}},
-       {Item("a304", Item::kTokenType), {}},
-       {Item("a305", Item::kTokenType), {}},
-       {Item("a306", Item::kTokenType), {}},
-       {Item("a307", Item::kTokenType), {}},
-       {Item("a308", Item::kTokenType), {}},
-       {Item("a309", Item::kTokenType), {}},
-       {Item("a310", Item::kTokenType), {}},
-       {Item("a311", Item::kTokenType), {}},
-       {Item("a312", Item::kTokenType), {}},
-       {Item("a313", Item::kTokenType), {}},
-       {Item("a314", Item::kTokenType), {}},
-       {Item("a315", Item::kTokenType), {}},
-       {Item("a316", Item::kTokenType), {}},
-       {Item("a317", Item::kTokenType), {}},
-       {Item("a318", Item::kTokenType), {}},
-       {Item("a319", Item::kTokenType), {}},
-       {Item("a320", Item::kTokenType), {}},
-       {Item("a321", Item::kTokenType), {}},
-       {Item("a322", Item::kTokenType), {}},
-       {Item("a323", Item::kTokenType), {}},
-       {Item("a324", Item::kTokenType), {}},
-       {Item("a325", Item::kTokenType), {}},
-       {Item("a326", Item::kTokenType), {}},
-       {Item("a327", Item::kTokenType), {}},
-       {Item("a328", Item::kTokenType), {}},
-       {Item("a329", Item::kTokenType), {}},
-       {Item("a330", Item::kTokenType), {}},
-       {Item("a331", Item::kTokenType), {}},
-       {Item("a332", Item::kTokenType), {}},
-       {Item("a333", Item::kTokenType), {}},
-       {Item("a334", Item::kTokenType), {}},
-       {Item("a335", Item::kTokenType), {}},
-       {Item("a336", Item::kTokenType), {}},
-       {Item("a337", Item::kTokenType), {}},
-       {Item("a338", Item::kTokenType), {}},
-       {Item("a339", Item::kTokenType), {}},
-       {Item("a340", Item::kTokenType), {}},
-       {Item("a341", Item::kTokenType), {}},
-       {Item("a342", Item::kTokenType), {}},
-       {Item("a343", Item::kTokenType), {}},
-       {Item("a344", Item::kTokenType), {}},
-       {Item("a345", Item::kTokenType), {}},
-       {Item("a346", Item::kTokenType), {}},
-       {Item("a347", Item::kTokenType), {}},
-       {Item("a348", Item::kTokenType), {}},
-       {Item("a349", Item::kTokenType), {}},
-       {Item("a350", Item::kTokenType), {}},
-       {Item("a351", Item::kTokenType), {}},
-       {Item("a352", Item::kTokenType), {}},
-       {Item("a353", Item::kTokenType), {}},
-       {Item("a354", Item::kTokenType), {}},
-       {Item("a355", Item::kTokenType), {}},
-       {Item("a356", Item::kTokenType), {}},
-       {Item("a357", Item::kTokenType), {}},
-       {Item("a358", Item::kTokenType), {}},
-       {Item("a359", Item::kTokenType), {}},
-       {Item("a360", Item::kTokenType), {}},
-       {Item("a361", Item::kTokenType), {}},
-       {Item("a362", Item::kTokenType), {}},
-       {Item("a363", Item::kTokenType), {}},
-       {Item("a364", Item::kTokenType), {}},
-       {Item("a365", Item::kTokenType), {}},
-       {Item("a366", Item::kTokenType), {}},
-       {Item("a367", Item::kTokenType), {}},
-       {Item("a368", Item::kTokenType), {}},
-       {Item("a369", Item::kTokenType), {}},
-       {Item("a370", Item::kTokenType), {}},
-       {Item("a371", Item::kTokenType), {}},
-       {Item("a372", Item::kTokenType), {}},
-       {Item("a373", Item::kTokenType), {}},
-       {Item("a374", Item::kTokenType), {}},
-       {Item("a375", Item::kTokenType), {}},
-       {Item("a376", Item::kTokenType), {}},
-       {Item("a377", Item::kTokenType), {}},
-       {Item("a378", Item::kTokenType), {}},
-       {Item("a379", Item::kTokenType), {}},
-       {Item("a380", Item::kTokenType), {}},
-       {Item("a381", Item::kTokenType), {}},
-       {Item("a382", Item::kTokenType), {}},
-       {Item("a383", Item::kTokenType), {}},
-       {Item("a384", Item::kTokenType), {}},
-       {Item("a385", Item::kTokenType), {}},
-       {Item("a386", Item::kTokenType), {}},
-       {Item("a387", Item::kTokenType), {}},
-       {Item("a388", Item::kTokenType), {}},
-       {Item("a389", Item::kTokenType), {}},
-       {Item("a390", Item::kTokenType), {}},
-       {Item("a391", Item::kTokenType), {}},
-       {Item("a392", Item::kTokenType), {}},
-       {Item("a393", Item::kTokenType), {}},
-       {Item("a394", Item::kTokenType), {}},
-       {Item("a395", Item::kTokenType), {}},
-       {Item("a396", Item::kTokenType), {}},
-       {Item("a397", Item::kTokenType), {}},
-       {Item("a398", Item::kTokenType), {}},
-       {Item("a399", Item::kTokenType), {}},
-       {Item("a400", Item::kTokenType), {}},
-       {Item("a401", Item::kTokenType), {}},
-       {Item("a402", Item::kTokenType), {}},
-       {Item("a403", Item::kTokenType), {}},
-       {Item("a404", Item::kTokenType), {}},
-       {Item("a405", Item::kTokenType), {}},
-       {Item("a406", Item::kTokenType), {}},
-       {Item("a407", Item::kTokenType), {}},
-       {Item("a408", Item::kTokenType), {}},
-       {Item("a409", Item::kTokenType), {}},
-       {Item("a410", Item::kTokenType), {}},
-       {Item("a411", Item::kTokenType), {}},
-       {Item("a412", Item::kTokenType), {}},
-       {Item("a413", Item::kTokenType), {}},
-       {Item("a414", Item::kTokenType), {}},
-       {Item("a415", Item::kTokenType), {}},
-       {Item("a416", Item::kTokenType), {}},
-       {Item("a417", Item::kTokenType), {}},
-       {Item("a418", Item::kTokenType), {}},
-       {Item("a419", Item::kTokenType), {}},
-       {Item("a420", Item::kTokenType), {}},
-       {Item("a421", Item::kTokenType), {}},
-       {Item("a422", Item::kTokenType), {}},
-       {Item("a423", Item::kTokenType), {}},
-       {Item("a424", Item::kTokenType), {}},
-       {Item("a425", Item::kTokenType), {}},
-       {Item("a426", Item::kTokenType), {}},
-       {Item("a427", Item::kTokenType), {}},
-       {Item("a428", Item::kTokenType), {}},
-       {Item("a429", Item::kTokenType), {}},
-       {Item("a430", Item::kTokenType), {}},
-       {Item("a431", Item::kTokenType), {}},
-       {Item("a432", Item::kTokenType), {}},
-       {Item("a433", Item::kTokenType), {}},
-       {Item("a434", Item::kTokenType), {}},
-       {Item("a435", Item::kTokenType), {}},
-       {Item("a436", Item::kTokenType), {}},
-       {Item("a437", Item::kTokenType), {}},
-       {Item("a438", Item::kTokenType), {}},
-       {Item("a439", Item::kTokenType), {}},
-       {Item("a440", Item::kTokenType), {}},
-       {Item("a441", Item::kTokenType), {}},
-       {Item("a442", Item::kTokenType), {}},
-       {Item("a443", Item::kTokenType), {}},
-       {Item("a444", Item::kTokenType), {}},
-       {Item("a445", Item::kTokenType), {}},
-       {Item("a446", Item::kTokenType), {}},
-       {Item("a447", Item::kTokenType), {}},
-       {Item("a448", Item::kTokenType), {}},
-       {Item("a449", Item::kTokenType), {}},
-       {Item("a450", Item::kTokenType), {}},
-       {Item("a451", Item::kTokenType), {}},
-       {Item("a452", Item::kTokenType), {}},
-       {Item("a453", Item::kTokenType), {}},
-       {Item("a454", Item::kTokenType), {}},
-       {Item("a455", Item::kTokenType), {}},
-       {Item("a456", Item::kTokenType), {}},
-       {Item("a457", Item::kTokenType), {}},
-       {Item("a458", Item::kTokenType), {}},
-       {Item("a459", Item::kTokenType), {}},
-       {Item("a460", Item::kTokenType), {}},
-       {Item("a461", Item::kTokenType), {}},
-       {Item("a462", Item::kTokenType), {}},
-       {Item("a463", Item::kTokenType), {}},
-       {Item("a464", Item::kTokenType), {}},
-       {Item("a465", Item::kTokenType), {}},
-       {Item("a466", Item::kTokenType), {}},
-       {Item("a467", Item::kTokenType), {}},
-       {Item("a468", Item::kTokenType), {}},
-       {Item("a469", Item::kTokenType), {}},
-       {Item("a470", Item::kTokenType), {}},
-       {Item("a471", Item::kTokenType), {}},
-       {Item("a472", Item::kTokenType), {}},
-       {Item("a473", Item::kTokenType), {}},
-       {Item("a474", Item::kTokenType), {}},
-       {Item("a475", Item::kTokenType), {}},
-       {Item("a476", Item::kTokenType), {}},
-       {Item("a477", Item::kTokenType), {}},
-       {Item("a478", Item::kTokenType), {}},
-       {Item("a479", Item::kTokenType), {}},
-       {Item("a480", Item::kTokenType), {}},
-       {Item("a481", Item::kTokenType), {}},
-       {Item("a482", Item::kTokenType), {}},
-       {Item("a483", Item::kTokenType), {}},
-       {Item("a484", Item::kTokenType), {}},
-       {Item("a485", Item::kTokenType), {}},
-       {Item("a486", Item::kTokenType), {}},
-       {Item("a487", Item::kTokenType), {}},
-       {Item("a488", Item::kTokenType), {}},
-       {Item("a489", Item::kTokenType), {}},
-       {Item("a490", Item::kTokenType), {}},
-       {Item("a491", Item::kTokenType), {}},
-       {Item("a492", Item::kTokenType), {}},
-       {Item("a493", Item::kTokenType), {}},
-       {Item("a494", Item::kTokenType), {}},
-       {Item("a495", Item::kTokenType), {}},
-       {Item("a496", Item::kTokenType), {}},
-       {Item("a497", Item::kTokenType), {}},
-       {Item("a498", Item::kTokenType), {}},
-       {Item("a499", Item::kTokenType), {}},
-       {Item("a500", Item::kTokenType), {}},
-       {Item("a501", Item::kTokenType), {}},
-       {Item("a502", Item::kTokenType), {}},
-       {Item("a503", Item::kTokenType), {}},
-       {Item("a504", Item::kTokenType), {}},
-       {Item("a505", Item::kTokenType), {}},
-       {Item("a506", Item::kTokenType), {}},
-       {Item("a507", Item::kTokenType), {}},
-       {Item("a508", Item::kTokenType), {}},
-       {Item("a509", Item::kTokenType), {}},
-       {Item("a510", Item::kTokenType), {}},
-       {Item("a511", Item::kTokenType), {}},
-       {Item("a512", Item::kTokenType), {}},
-       {Item("a513", Item::kTokenType), {}},
-       {Item("a514", Item::kTokenType), {}},
-       {Item("a515", Item::kTokenType), {}},
-       {Item("a516", Item::kTokenType), {}},
-       {Item("a517", Item::kTokenType), {}},
-       {Item("a518", Item::kTokenType), {}},
-       {Item("a519", Item::kTokenType), {}},
-       {Item("a520", Item::kTokenType), {}},
-       {Item("a521", Item::kTokenType), {}},
-       {Item("a522", Item::kTokenType), {}},
-       {Item("a523", Item::kTokenType), {}},
-       {Item("a524", Item::kTokenType), {}},
-       {Item("a525", Item::kTokenType), {}},
-       {Item("a526", Item::kTokenType), {}},
-       {Item("a527", Item::kTokenType), {}},
-       {Item("a528", Item::kTokenType), {}},
-       {Item("a529", Item::kTokenType), {}},
-       {Item("a530", Item::kTokenType), {}},
-       {Item("a531", Item::kTokenType), {}},
-       {Item("a532", Item::kTokenType), {}},
-       {Item("a533", Item::kTokenType), {}},
-       {Item("a534", Item::kTokenType), {}},
-       {Item("a535", Item::kTokenType), {}},
-       {Item("a536", Item::kTokenType), {}},
-       {Item("a537", Item::kTokenType), {}},
-       {Item("a538", Item::kTokenType), {}},
-       {Item("a539", Item::kTokenType), {}},
-       {Item("a540", Item::kTokenType), {}},
-       {Item("a541", Item::kTokenType), {}},
-       {Item("a542", Item::kTokenType), {}},
-       {Item("a543", Item::kTokenType), {}},
-       {Item("a544", Item::kTokenType), {}},
-       {Item("a545", Item::kTokenType), {}},
-       {Item("a546", Item::kTokenType), {}},
-       {Item("a547", Item::kTokenType), {}},
-       {Item("a548", Item::kTokenType), {}},
-       {Item("a549", Item::kTokenType), {}},
-       {Item("a550", Item::kTokenType), {}},
-       {Item("a551", Item::kTokenType), {}},
-       {Item("a552", Item::kTokenType), {}},
-       {Item("a553", Item::kTokenType), {}},
-       {Item("a554", Item::kTokenType), {}},
-       {Item("a555", Item::kTokenType), {}},
-       {Item("a556", Item::kTokenType), {}},
-       {Item("a557", Item::kTokenType), {}},
-       {Item("a558", Item::kTokenType), {}},
-       {Item("a559", Item::kTokenType), {}},
-       {Item("a560", Item::kTokenType), {}},
-       {Item("a561", Item::kTokenType), {}},
-       {Item("a562", Item::kTokenType), {}},
-       {Item("a563", Item::kTokenType), {}},
-       {Item("a564", Item::kTokenType), {}},
-       {Item("a565", Item::kTokenType), {}},
-       {Item("a566", Item::kTokenType), {}},
-       {Item("a567", Item::kTokenType), {}},
-       {Item("a568", Item::kTokenType), {}},
-       {Item("a569", Item::kTokenType), {}},
-       {Item("a570", Item::kTokenType), {}},
-       {Item("a571", Item::kTokenType), {}},
-       {Item("a572", Item::kTokenType), {}},
-       {Item("a573", Item::kTokenType), {}},
-       {Item("a574", Item::kTokenType), {}},
-       {Item("a575", Item::kTokenType), {}},
-       {Item("a576", Item::kTokenType), {}},
-       {Item("a577", Item::kTokenType), {}},
-       {Item("a578", Item::kTokenType), {}},
-       {Item("a579", Item::kTokenType), {}},
-       {Item("a580", Item::kTokenType), {}},
-       {Item("a581", Item::kTokenType), {}},
-       {Item("a582", Item::kTokenType), {}},
-       {Item("a583", Item::kTokenType), {}},
-       {Item("a584", Item::kTokenType), {}},
-       {Item("a585", Item::kTokenType), {}},
-       {Item("a586", Item::kTokenType), {}},
-       {Item("a587", Item::kTokenType), {}},
-       {Item("a588", Item::kTokenType), {}},
-       {Item("a589", Item::kTokenType), {}},
-       {Item("a590", Item::kTokenType), {}},
-       {Item("a591", Item::kTokenType), {}},
-       {Item("a592", Item::kTokenType), {}},
-       {Item("a593", Item::kTokenType), {}},
-       {Item("a594", Item::kTokenType), {}},
-       {Item("a595", Item::kTokenType), {}},
-       {Item("a596", Item::kTokenType), {}},
-       {Item("a597", Item::kTokenType), {}},
-       {Item("a598", Item::kTokenType), {}},
-       {Item("a599", Item::kTokenType), {}},
-       {Item("a600", Item::kTokenType), {}},
-       {Item("a601", Item::kTokenType), {}},
-       {Item("a602", Item::kTokenType), {}},
-       {Item("a603", Item::kTokenType), {}},
-       {Item("a604", Item::kTokenType), {}},
-       {Item("a605", Item::kTokenType), {}},
-       {Item("a606", Item::kTokenType), {}},
-       {Item("a607", Item::kTokenType), {}},
-       {Item("a608", Item::kTokenType), {}},
-       {Item("a609", Item::kTokenType), {}},
-       {Item("a610", Item::kTokenType), {}},
-       {Item("a611", Item::kTokenType), {}},
-       {Item("a612", Item::kTokenType), {}},
-       {Item("a613", Item::kTokenType), {}},
-       {Item("a614", Item::kTokenType), {}},
-       {Item("a615", Item::kTokenType), {}},
-       {Item("a616", Item::kTokenType), {}},
-       {Item("a617", Item::kTokenType), {}},
-       {Item("a618", Item::kTokenType), {}},
-       {Item("a619", Item::kTokenType), {}},
-       {Item("a620", Item::kTokenType), {}},
-       {Item("a621", Item::kTokenType), {}},
-       {Item("a622", Item::kTokenType), {}},
-       {Item("a623", Item::kTokenType), {}},
-       {Item("a624", Item::kTokenType), {}},
-       {Item("a625", Item::kTokenType), {}},
-       {Item("a626", Item::kTokenType), {}},
-       {Item("a627", Item::kTokenType), {}},
-       {Item("a628", Item::kTokenType), {}},
-       {Item("a629", Item::kTokenType), {}},
-       {Item("a630", Item::kTokenType), {}},
-       {Item("a631", Item::kTokenType), {}},
-       {Item("a632", Item::kTokenType), {}},
-       {Item("a633", Item::kTokenType), {}},
-       {Item("a634", Item::kTokenType), {}},
-       {Item("a635", Item::kTokenType), {}},
-       {Item("a636", Item::kTokenType), {}},
-       {Item("a637", Item::kTokenType), {}},
-       {Item("a638", Item::kTokenType), {}},
-       {Item("a639", Item::kTokenType), {}},
-       {Item("a640", Item::kTokenType), {}},
-       {Item("a641", Item::kTokenType), {}},
-       {Item("a642", Item::kTokenType), {}},
-       {Item("a643", Item::kTokenType), {}},
-       {Item("a644", Item::kTokenType), {}},
-       {Item("a645", Item::kTokenType), {}},
-       {Item("a646", Item::kTokenType), {}},
-       {Item("a647", Item::kTokenType), {}},
-       {Item("a648", Item::kTokenType), {}},
-       {Item("a649", Item::kTokenType), {}},
-       {Item("a650", Item::kTokenType), {}},
-       {Item("a651", Item::kTokenType), {}},
-       {Item("a652", Item::kTokenType), {}},
-       {Item("a653", Item::kTokenType), {}},
-       {Item("a654", Item::kTokenType), {}},
-       {Item("a655", Item::kTokenType), {}},
-       {Item("a656", Item::kTokenType), {}},
-       {Item("a657", Item::kTokenType), {}},
-       {Item("a658", Item::kTokenType), {}},
-       {Item("a659", Item::kTokenType), {}},
-       {Item("a660", Item::kTokenType), {}},
-       {Item("a661", Item::kTokenType), {}},
-       {Item("a662", Item::kTokenType), {}},
-       {Item("a663", Item::kTokenType), {}},
-       {Item("a664", Item::kTokenType), {}},
-       {Item("a665", Item::kTokenType), {}},
-       {Item("a666", Item::kTokenType), {}},
-       {Item("a667", Item::kTokenType), {}},
-       {Item("a668", Item::kTokenType), {}},
-       {Item("a669", Item::kTokenType), {}},
-       {Item("a670", Item::kTokenType), {}},
-       {Item("a671", Item::kTokenType), {}},
-       {Item("a672", Item::kTokenType), {}},
-       {Item("a673", Item::kTokenType), {}},
-       {Item("a674", Item::kTokenType), {}},
-       {Item("a675", Item::kTokenType), {}},
-       {Item("a676", Item::kTokenType), {}},
-       {Item("a677", Item::kTokenType), {}},
-       {Item("a678", Item::kTokenType), {}},
-       {Item("a679", Item::kTokenType), {}},
-       {Item("a680", Item::kTokenType), {}},
-       {Item("a681", Item::kTokenType), {}},
-       {Item("a682", Item::kTokenType), {}},
-       {Item("a683", Item::kTokenType), {}},
-       {Item("a684", Item::kTokenType), {}},
-       {Item("a685", Item::kTokenType), {}},
-       {Item("a686", Item::kTokenType), {}},
-       {Item("a687", Item::kTokenType), {}},
-       {Item("a688", Item::kTokenType), {}},
-       {Item("a689", Item::kTokenType), {}},
-       {Item("a690", Item::kTokenType), {}},
-       {Item("a691", Item::kTokenType), {}},
-       {Item("a692", Item::kTokenType), {}},
-       {Item("a693", Item::kTokenType), {}},
-       {Item("a694", Item::kTokenType), {}},
-       {Item("a695", Item::kTokenType), {}},
-       {Item("a696", Item::kTokenType), {}},
-       {Item("a697", Item::kTokenType), {}},
-       {Item("a698", Item::kTokenType), {}},
-       {Item("a699", Item::kTokenType), {}},
-       {Item("a700", Item::kTokenType), {}},
-       {Item("a701", Item::kTokenType), {}},
-       {Item("a702", Item::kTokenType), {}},
-       {Item("a703", Item::kTokenType), {}},
-       {Item("a704", Item::kTokenType), {}},
-       {Item("a705", Item::kTokenType), {}},
-       {Item("a706", Item::kTokenType), {}},
-       {Item("a707", Item::kTokenType), {}},
-       {Item("a708", Item::kTokenType), {}},
-       {Item("a709", Item::kTokenType), {}},
-       {Item("a710", Item::kTokenType), {}},
-       {Item("a711", Item::kTokenType), {}},
-       {Item("a712", Item::kTokenType), {}},
-       {Item("a713", Item::kTokenType), {}},
-       {Item("a714", Item::kTokenType), {}},
-       {Item("a715", Item::kTokenType), {}},
-       {Item("a716", Item::kTokenType), {}},
-       {Item("a717", Item::kTokenType), {}},
-       {Item("a718", Item::kTokenType), {}},
-       {Item("a719", Item::kTokenType), {}},
-       {Item("a720", Item::kTokenType), {}},
-       {Item("a721", Item::kTokenType), {}},
-       {Item("a722", Item::kTokenType), {}},
-       {Item("a723", Item::kTokenType), {}},
-       {Item("a724", Item::kTokenType), {}},
-       {Item("a725", Item::kTokenType), {}},
-       {Item("a726", Item::kTokenType), {}},
-       {Item("a727", Item::kTokenType), {}},
-       {Item("a728", Item::kTokenType), {}},
-       {Item("a729", Item::kTokenType), {}},
-       {Item("a730", Item::kTokenType), {}},
-       {Item("a731", Item::kTokenType), {}},
-       {Item("a732", Item::kTokenType), {}},
-       {Item("a733", Item::kTokenType), {}},
-       {Item("a734", Item::kTokenType), {}},
-       {Item("a735", Item::kTokenType), {}},
-       {Item("a736", Item::kTokenType), {}},
-       {Item("a737", Item::kTokenType), {}},
-       {Item("a738", Item::kTokenType), {}},
-       {Item("a739", Item::kTokenType), {}},
-       {Item("a740", Item::kTokenType), {}},
-       {Item("a741", Item::kTokenType), {}},
-       {Item("a742", Item::kTokenType), {}},
-       {Item("a743", Item::kTokenType), {}},
-       {Item("a744", Item::kTokenType), {}},
-       {Item("a745", Item::kTokenType), {}},
-       {Item("a746", Item::kTokenType), {}},
-       {Item("a747", Item::kTokenType), {}},
-       {Item("a748", Item::kTokenType), {}},
-       {Item("a749", Item::kTokenType), {}},
-       {Item("a750", Item::kTokenType), {}},
-       {Item("a751", Item::kTokenType), {}},
-       {Item("a752", Item::kTokenType), {}},
-       {Item("a753", Item::kTokenType), {}},
-       {Item("a754", Item::kTokenType), {}},
-       {Item("a755", Item::kTokenType), {}},
-       {Item("a756", Item::kTokenType), {}},
-       {Item("a757", Item::kTokenType), {}},
-       {Item("a758", Item::kTokenType), {}},
-       {Item("a759", Item::kTokenType), {}},
-       {Item("a760", Item::kTokenType), {}},
-       {Item("a761", Item::kTokenType), {}},
-       {Item("a762", Item::kTokenType), {}},
-       {Item("a763", Item::kTokenType), {}},
-       {Item("a764", Item::kTokenType), {}},
-       {Item("a765", Item::kTokenType), {}},
-       {Item("a766", Item::kTokenType), {}},
-       {Item("a767", Item::kTokenType), {}},
-       {Item("a768", Item::kTokenType), {}},
-       {Item("a769", Item::kTokenType), {}},
-       {Item("a770", Item::kTokenType), {}},
-       {Item("a771", Item::kTokenType), {}},
-       {Item("a772", Item::kTokenType), {}},
-       {Item("a773", Item::kTokenType), {}},
-       {Item("a774", Item::kTokenType), {}},
-       {Item("a775", Item::kTokenType), {}},
-       {Item("a776", Item::kTokenType), {}},
-       {Item("a777", Item::kTokenType), {}},
-       {Item("a778", Item::kTokenType), {}},
-       {Item("a779", Item::kTokenType), {}},
-       {Item("a780", Item::kTokenType), {}},
-       {Item("a781", Item::kTokenType), {}},
-       {Item("a782", Item::kTokenType), {}},
-       {Item("a783", Item::kTokenType), {}},
-       {Item("a784", Item::kTokenType), {}},
-       {Item("a785", Item::kTokenType), {}},
-       {Item("a786", Item::kTokenType), {}},
-       {Item("a787", Item::kTokenType), {}},
-       {Item("a788", Item::kTokenType), {}},
-       {Item("a789", Item::kTokenType), {}},
-       {Item("a790", Item::kTokenType), {}},
-       {Item("a791", Item::kTokenType), {}},
-       {Item("a792", Item::kTokenType), {}},
-       {Item("a793", Item::kTokenType), {}},
-       {Item("a794", Item::kTokenType), {}},
-       {Item("a795", Item::kTokenType), {}},
-       {Item("a796", Item::kTokenType), {}},
-       {Item("a797", Item::kTokenType), {}},
-       {Item("a798", Item::kTokenType), {}},
-       {Item("a799", Item::kTokenType), {}},
-       {Item("a800", Item::kTokenType), {}},
-       {Item("a801", Item::kTokenType), {}},
-       {Item("a802", Item::kTokenType), {}},
-       {Item("a803", Item::kTokenType), {}},
-       {Item("a804", Item::kTokenType), {}},
-       {Item("a805", Item::kTokenType), {}},
-       {Item("a806", Item::kTokenType), {}},
-       {Item("a807", Item::kTokenType), {}},
-       {Item("a808", Item::kTokenType), {}},
-       {Item("a809", Item::kTokenType), {}},
-       {Item("a810", Item::kTokenType), {}},
-       {Item("a811", Item::kTokenType), {}},
-       {Item("a812", Item::kTokenType), {}},
-       {Item("a813", Item::kTokenType), {}},
-       {Item("a814", Item::kTokenType), {}},
-       {Item("a815", Item::kTokenType), {}},
-       {Item("a816", Item::kTokenType), {}},
-       {Item("a817", Item::kTokenType), {}},
-       {Item("a818", Item::kTokenType), {}},
-       {Item("a819", Item::kTokenType), {}},
-       {Item("a820", Item::kTokenType), {}},
-       {Item("a821", Item::kTokenType), {}},
-       {Item("a822", Item::kTokenType), {}},
-       {Item("a823", Item::kTokenType), {}},
-       {Item("a824", Item::kTokenType), {}},
-       {Item("a825", Item::kTokenType), {}},
-       {Item("a826", Item::kTokenType), {}},
-       {Item("a827", Item::kTokenType), {}},
-       {Item("a828", Item::kTokenType), {}},
-       {Item("a829", Item::kTokenType), {}},
-       {Item("a830", Item::kTokenType), {}},
-       {Item("a831", Item::kTokenType), {}},
-       {Item("a832", Item::kTokenType), {}},
-       {Item("a833", Item::kTokenType), {}},
-       {Item("a834", Item::kTokenType), {}},
-       {Item("a835", Item::kTokenType), {}},
-       {Item("a836", Item::kTokenType), {}},
-       {Item("a837", Item::kTokenType), {}},
-       {Item("a838", Item::kTokenType), {}},
-       {Item("a839", Item::kTokenType), {}},
-       {Item("a840", Item::kTokenType), {}},
-       {Item("a841", Item::kTokenType), {}},
-       {Item("a842", Item::kTokenType), {}},
-       {Item("a843", Item::kTokenType), {}},
-       {Item("a844", Item::kTokenType), {}},
-       {Item("a845", Item::kTokenType), {}},
-       {Item("a846", Item::kTokenType), {}},
-       {Item("a847", Item::kTokenType), {}},
-       {Item("a848", Item::kTokenType), {}},
-       {Item("a849", Item::kTokenType), {}},
-       {Item("a850", Item::kTokenType), {}},
-       {Item("a851", Item::kTokenType), {}},
-       {Item("a852", Item::kTokenType), {}},
-       {Item("a853", Item::kTokenType), {}},
-       {Item("a854", Item::kTokenType), {}},
-       {Item("a855", Item::kTokenType), {}},
-       {Item("a856", Item::kTokenType), {}},
-       {Item("a857", Item::kTokenType), {}},
-       {Item("a858", Item::kTokenType), {}},
-       {Item("a859", Item::kTokenType), {}},
-       {Item("a860", Item::kTokenType), {}},
-       {Item("a861", Item::kTokenType), {}},
-       {Item("a862", Item::kTokenType), {}},
-       {Item("a863", Item::kTokenType), {}},
-       {Item("a864", Item::kTokenType), {}},
-       {Item("a865", Item::kTokenType), {}},
-       {Item("a866", Item::kTokenType), {}},
-       {Item("a867", Item::kTokenType), {}},
-       {Item("a868", Item::kTokenType), {}},
-       {Item("a869", Item::kTokenType), {}},
-       {Item("a870", Item::kTokenType), {}},
-       {Item("a871", Item::kTokenType), {}},
-       {Item("a872", Item::kTokenType), {}},
-       {Item("a873", Item::kTokenType), {}},
-       {Item("a874", Item::kTokenType), {}},
-       {Item("a875", Item::kTokenType), {}},
-       {Item("a876", Item::kTokenType), {}},
-       {Item("a877", Item::kTokenType), {}},
-       {Item("a878", Item::kTokenType), {}},
-       {Item("a879", Item::kTokenType), {}},
-       {Item("a880", Item::kTokenType), {}},
-       {Item("a881", Item::kTokenType), {}},
-       {Item("a882", Item::kTokenType), {}},
-       {Item("a883", Item::kTokenType), {}},
-       {Item("a884", Item::kTokenType), {}},
-       {Item("a885", Item::kTokenType), {}},
-       {Item("a886", Item::kTokenType), {}},
-       {Item("a887", Item::kTokenType), {}},
-       {Item("a888", Item::kTokenType), {}},
-       {Item("a889", Item::kTokenType), {}},
-       {Item("a890", Item::kTokenType), {}},
-       {Item("a891", Item::kTokenType), {}},
-       {Item("a892", Item::kTokenType), {}},
-       {Item("a893", Item::kTokenType), {}},
-       {Item("a894", Item::kTokenType), {}},
-       {Item("a895", Item::kTokenType), {}},
-       {Item("a896", Item::kTokenType), {}},
-       {Item("a897", Item::kTokenType), {}},
-       {Item("a898", Item::kTokenType), {}},
-       {Item("a899", Item::kTokenType), {}},
-       {Item("a900", Item::kTokenType), {}},
-       {Item("a901", Item::kTokenType), {}},
-       {Item("a902", Item::kTokenType), {}},
-       {Item("a903", Item::kTokenType), {}},
-       {Item("a904", Item::kTokenType), {}},
-       {Item("a905", Item::kTokenType), {}},
-       {Item("a906", Item::kTokenType), {}},
-       {Item("a907", Item::kTokenType), {}},
-       {Item("a908", Item::kTokenType), {}},
-       {Item("a909", Item::kTokenType), {}},
-       {Item("a910", Item::kTokenType), {}},
-       {Item("a911", Item::kTokenType), {}},
-       {Item("a912", Item::kTokenType), {}},
-       {Item("a913", Item::kTokenType), {}},
-       {Item("a914", Item::kTokenType), {}},
-       {Item("a915", Item::kTokenType), {}},
-       {Item("a916", Item::kTokenType), {}},
-       {Item("a917", Item::kTokenType), {}},
-       {Item("a918", Item::kTokenType), {}},
-       {Item("a919", Item::kTokenType), {}},
-       {Item("a920", Item::kTokenType), {}},
-       {Item("a921", Item::kTokenType), {}},
-       {Item("a922", Item::kTokenType), {}},
-       {Item("a923", Item::kTokenType), {}},
-       {Item("a924", Item::kTokenType), {}},
-       {Item("a925", Item::kTokenType), {}},
-       {Item("a926", Item::kTokenType), {}},
-       {Item("a927", Item::kTokenType), {}},
-       {Item("a928", Item::kTokenType), {}},
-       {Item("a929", Item::kTokenType), {}},
-       {Item("a930", Item::kTokenType), {}},
-       {Item("a931", Item::kTokenType), {}},
-       {Item("a932", Item::kTokenType), {}},
-       {Item("a933", Item::kTokenType), {}},
-       {Item("a934", Item::kTokenType), {}},
-       {Item("a935", Item::kTokenType), {}},
-       {Item("a936", Item::kTokenType), {}},
-       {Item("a937", Item::kTokenType), {}},
-       {Item("a938", Item::kTokenType), {}},
-       {Item("a939", Item::kTokenType), {}},
-       {Item("a940", Item::kTokenType), {}},
-       {Item("a941", Item::kTokenType), {}},
-       {Item("a942", Item::kTokenType), {}},
-       {Item("a943", Item::kTokenType), {}},
-       {Item("a944", Item::kTokenType), {}},
-       {Item("a945", Item::kTokenType), {}},
-       {Item("a946", Item::kTokenType), {}},
-       {Item("a947", Item::kTokenType), {}},
-       {Item("a948", Item::kTokenType), {}},
-       {Item("a949", Item::kTokenType), {}},
-       {Item("a950", Item::kTokenType), {}},
-       {Item("a951", Item::kTokenType), {}},
-       {Item("a952", Item::kTokenType), {}},
-       {Item("a953", Item::kTokenType), {}},
-       {Item("a954", Item::kTokenType), {}},
-       {Item("a955", Item::kTokenType), {}},
-       {Item("a956", Item::kTokenType), {}},
-       {Item("a957", Item::kTokenType), {}},
-       {Item("a958", Item::kTokenType), {}},
-       {Item("a959", Item::kTokenType), {}},
-       {Item("a960", Item::kTokenType), {}},
-       {Item("a961", Item::kTokenType), {}},
-       {Item("a962", Item::kTokenType), {}},
-       {Item("a963", Item::kTokenType), {}},
-       {Item("a964", Item::kTokenType), {}},
-       {Item("a965", Item::kTokenType), {}},
-       {Item("a966", Item::kTokenType), {}},
-       {Item("a967", Item::kTokenType), {}},
-       {Item("a968", Item::kTokenType), {}},
-       {Item("a969", Item::kTokenType), {}},
-       {Item("a970", Item::kTokenType), {}},
-       {Item("a971", Item::kTokenType), {}},
-       {Item("a972", Item::kTokenType), {}},
-       {Item("a973", Item::kTokenType), {}},
-       {Item("a974", Item::kTokenType), {}},
-       {Item("a975", Item::kTokenType), {}},
-       {Item("a976", Item::kTokenType), {}},
-       {Item("a977", Item::kTokenType), {}},
-       {Item("a978", Item::kTokenType), {}},
-       {Item("a979", Item::kTokenType), {}},
-       {Item("a980", Item::kTokenType), {}},
-       {Item("a981", Item::kTokenType), {}},
-       {Item("a982", Item::kTokenType), {}},
-       {Item("a983", Item::kTokenType), {}},
-       {Item("a984", Item::kTokenType), {}},
-       {Item("a985", Item::kTokenType), {}},
-       {Item("a986", Item::kTokenType), {}},
-       {Item("a987", Item::kTokenType), {}},
-       {Item("a988", Item::kTokenType), {}},
-       {Item("a989", Item::kTokenType), {}},
-       {Item("a990", Item::kTokenType), {}},
-       {Item("a991", Item::kTokenType), {}},
-       {Item("a992", Item::kTokenType), {}},
-       {Item("a993", Item::kTokenType), {}},
-       {Item("a994", Item::kTokenType), {}},
-       {Item("a995", Item::kTokenType), {}},
-       {Item("a996", Item::kTokenType), {}},
-       {Item("a997", Item::kTokenType), {}},
-       {Item("a998", Item::kTokenType), {}},
-       {Item("a999", Item::kTokenType), {}},
-       {Item("a1000", Item::kTokenType), {}},
-       {Item("a1001", Item::kTokenType), {}},
-       {Item("a1002", Item::kTokenType), {}},
-       {Item("a1003", Item::kTokenType), {}},
-       {Item("a1004", Item::kTokenType), {}},
-       {Item("a1005", Item::kTokenType), {}},
-       {Item("a1006", Item::kTokenType), {}},
-       {Item("a1007", Item::kTokenType), {}},
-       {Item("a1008", Item::kTokenType), {}},
-       {Item("a1009", Item::kTokenType), {}},
-       {Item("a1010", Item::kTokenType), {}},
-       {Item("a1011", Item::kTokenType), {}},
-       {Item("a1012", Item::kTokenType), {}},
-       {Item("a1013", Item::kTokenType), {}},
-       {Item("a1014", Item::kTokenType), {}},
-       {Item("a1015", Item::kTokenType), {}},
-       {Item("a1016", Item::kTokenType), {}},
-       {Item("a1017", Item::kTokenType), {}},
-       {Item("a1018", Item::kTokenType), {}},
-       {Item("a1019", Item::kTokenType), {}},
-       {Item("a1020", Item::kTokenType), {}},
-       {Item("a1021", Item::kTokenType), {}},
-       {Item("a1022", Item::kTokenType), {}},
-       {Item("a1023", Item::kTokenType), {}}}},
+     {{{Item(Item::token, "a0"), {}},    {Item(Item::token, "a1"), {}},
+       {Item(Item::token, "a2"), {}},    {Item(Item::token, "a3"), {}},
+       {Item(Item::token, "a4"), {}},    {Item(Item::token, "a5"), {}},
+       {Item(Item::token, "a6"), {}},    {Item(Item::token, "a7"), {}},
+       {Item(Item::token, "a8"), {}},    {Item(Item::token, "a9"), {}},
+       {Item(Item::token, "a10"), {}},   {Item(Item::token, "a11"), {}},
+       {Item(Item::token, "a12"), {}},   {Item(Item::token, "a13"), {}},
+       {Item(Item::token, "a14"), {}},   {Item(Item::token, "a15"), {}},
+       {Item(Item::token, "a16"), {}},   {Item(Item::token, "a17"), {}},
+       {Item(Item::token, "a18"), {}},   {Item(Item::token, "a19"), {}},
+       {Item(Item::token, "a20"), {}},   {Item(Item::token, "a21"), {}},
+       {Item(Item::token, "a22"), {}},   {Item(Item::token, "a23"), {}},
+       {Item(Item::token, "a24"), {}},   {Item(Item::token, "a25"), {}},
+       {Item(Item::token, "a26"), {}},   {Item(Item::token, "a27"), {}},
+       {Item(Item::token, "a28"), {}},   {Item(Item::token, "a29"), {}},
+       {Item(Item::token, "a30"), {}},   {Item(Item::token, "a31"), {}},
+       {Item(Item::token, "a32"), {}},   {Item(Item::token, "a33"), {}},
+       {Item(Item::token, "a34"), {}},   {Item(Item::token, "a35"), {}},
+       {Item(Item::token, "a36"), {}},   {Item(Item::token, "a37"), {}},
+       {Item(Item::token, "a38"), {}},   {Item(Item::token, "a39"), {}},
+       {Item(Item::token, "a40"), {}},   {Item(Item::token, "a41"), {}},
+       {Item(Item::token, "a42"), {}},   {Item(Item::token, "a43"), {}},
+       {Item(Item::token, "a44"), {}},   {Item(Item::token, "a45"), {}},
+       {Item(Item::token, "a46"), {}},   {Item(Item::token, "a47"), {}},
+       {Item(Item::token, "a48"), {}},   {Item(Item::token, "a49"), {}},
+       {Item(Item::token, "a50"), {}},   {Item(Item::token, "a51"), {}},
+       {Item(Item::token, "a52"), {}},   {Item(Item::token, "a53"), {}},
+       {Item(Item::token, "a54"), {}},   {Item(Item::token, "a55"), {}},
+       {Item(Item::token, "a56"), {}},   {Item(Item::token, "a57"), {}},
+       {Item(Item::token, "a58"), {}},   {Item(Item::token, "a59"), {}},
+       {Item(Item::token, "a60"), {}},   {Item(Item::token, "a61"), {}},
+       {Item(Item::token, "a62"), {}},   {Item(Item::token, "a63"), {}},
+       {Item(Item::token, "a64"), {}},   {Item(Item::token, "a65"), {}},
+       {Item(Item::token, "a66"), {}},   {Item(Item::token, "a67"), {}},
+       {Item(Item::token, "a68"), {}},   {Item(Item::token, "a69"), {}},
+       {Item(Item::token, "a70"), {}},   {Item(Item::token, "a71"), {}},
+       {Item(Item::token, "a72"), {}},   {Item(Item::token, "a73"), {}},
+       {Item(Item::token, "a74"), {}},   {Item(Item::token, "a75"), {}},
+       {Item(Item::token, "a76"), {}},   {Item(Item::token, "a77"), {}},
+       {Item(Item::token, "a78"), {}},   {Item(Item::token, "a79"), {}},
+       {Item(Item::token, "a80"), {}},   {Item(Item::token, "a81"), {}},
+       {Item(Item::token, "a82"), {}},   {Item(Item::token, "a83"), {}},
+       {Item(Item::token, "a84"), {}},   {Item(Item::token, "a85"), {}},
+       {Item(Item::token, "a86"), {}},   {Item(Item::token, "a87"), {}},
+       {Item(Item::token, "a88"), {}},   {Item(Item::token, "a89"), {}},
+       {Item(Item::token, "a90"), {}},   {Item(Item::token, "a91"), {}},
+       {Item(Item::token, "a92"), {}},   {Item(Item::token, "a93"), {}},
+       {Item(Item::token, "a94"), {}},   {Item(Item::token, "a95"), {}},
+       {Item(Item::token, "a96"), {}},   {Item(Item::token, "a97"), {}},
+       {Item(Item::token, "a98"), {}},   {Item(Item::token, "a99"), {}},
+       {Item(Item::token, "a100"), {}},  {Item(Item::token, "a101"), {}},
+       {Item(Item::token, "a102"), {}},  {Item(Item::token, "a103"), {}},
+       {Item(Item::token, "a104"), {}},  {Item(Item::token, "a105"), {}},
+       {Item(Item::token, "a106"), {}},  {Item(Item::token, "a107"), {}},
+       {Item(Item::token, "a108"), {}},  {Item(Item::token, "a109"), {}},
+       {Item(Item::token, "a110"), {}},  {Item(Item::token, "a111"), {}},
+       {Item(Item::token, "a112"), {}},  {Item(Item::token, "a113"), {}},
+       {Item(Item::token, "a114"), {}},  {Item(Item::token, "a115"), {}},
+       {Item(Item::token, "a116"), {}},  {Item(Item::token, "a117"), {}},
+       {Item(Item::token, "a118"), {}},  {Item(Item::token, "a119"), {}},
+       {Item(Item::token, "a120"), {}},  {Item(Item::token, "a121"), {}},
+       {Item(Item::token, "a122"), {}},  {Item(Item::token, "a123"), {}},
+       {Item(Item::token, "a124"), {}},  {Item(Item::token, "a125"), {}},
+       {Item(Item::token, "a126"), {}},  {Item(Item::token, "a127"), {}},
+       {Item(Item::token, "a128"), {}},  {Item(Item::token, "a129"), {}},
+       {Item(Item::token, "a130"), {}},  {Item(Item::token, "a131"), {}},
+       {Item(Item::token, "a132"), {}},  {Item(Item::token, "a133"), {}},
+       {Item(Item::token, "a134"), {}},  {Item(Item::token, "a135"), {}},
+       {Item(Item::token, "a136"), {}},  {Item(Item::token, "a137"), {}},
+       {Item(Item::token, "a138"), {}},  {Item(Item::token, "a139"), {}},
+       {Item(Item::token, "a140"), {}},  {Item(Item::token, "a141"), {}},
+       {Item(Item::token, "a142"), {}},  {Item(Item::token, "a143"), {}},
+       {Item(Item::token, "a144"), {}},  {Item(Item::token, "a145"), {}},
+       {Item(Item::token, "a146"), {}},  {Item(Item::token, "a147"), {}},
+       {Item(Item::token, "a148"), {}},  {Item(Item::token, "a149"), {}},
+       {Item(Item::token, "a150"), {}},  {Item(Item::token, "a151"), {}},
+       {Item(Item::token, "a152"), {}},  {Item(Item::token, "a153"), {}},
+       {Item(Item::token, "a154"), {}},  {Item(Item::token, "a155"), {}},
+       {Item(Item::token, "a156"), {}},  {Item(Item::token, "a157"), {}},
+       {Item(Item::token, "a158"), {}},  {Item(Item::token, "a159"), {}},
+       {Item(Item::token, "a160"), {}},  {Item(Item::token, "a161"), {}},
+       {Item(Item::token, "a162"), {}},  {Item(Item::token, "a163"), {}},
+       {Item(Item::token, "a164"), {}},  {Item(Item::token, "a165"), {}},
+       {Item(Item::token, "a166"), {}},  {Item(Item::token, "a167"), {}},
+       {Item(Item::token, "a168"), {}},  {Item(Item::token, "a169"), {}},
+       {Item(Item::token, "a170"), {}},  {Item(Item::token, "a171"), {}},
+       {Item(Item::token, "a172"), {}},  {Item(Item::token, "a173"), {}},
+       {Item(Item::token, "a174"), {}},  {Item(Item::token, "a175"), {}},
+       {Item(Item::token, "a176"), {}},  {Item(Item::token, "a177"), {}},
+       {Item(Item::token, "a178"), {}},  {Item(Item::token, "a179"), {}},
+       {Item(Item::token, "a180"), {}},  {Item(Item::token, "a181"), {}},
+       {Item(Item::token, "a182"), {}},  {Item(Item::token, "a183"), {}},
+       {Item(Item::token, "a184"), {}},  {Item(Item::token, "a185"), {}},
+       {Item(Item::token, "a186"), {}},  {Item(Item::token, "a187"), {}},
+       {Item(Item::token, "a188"), {}},  {Item(Item::token, "a189"), {}},
+       {Item(Item::token, "a190"), {}},  {Item(Item::token, "a191"), {}},
+       {Item(Item::token, "a192"), {}},  {Item(Item::token, "a193"), {}},
+       {Item(Item::token, "a194"), {}},  {Item(Item::token, "a195"), {}},
+       {Item(Item::token, "a196"), {}},  {Item(Item::token, "a197"), {}},
+       {Item(Item::token, "a198"), {}},  {Item(Item::token, "a199"), {}},
+       {Item(Item::token, "a200"), {}},  {Item(Item::token, "a201"), {}},
+       {Item(Item::token, "a202"), {}},  {Item(Item::token, "a203"), {}},
+       {Item(Item::token, "a204"), {}},  {Item(Item::token, "a205"), {}},
+       {Item(Item::token, "a206"), {}},  {Item(Item::token, "a207"), {}},
+       {Item(Item::token, "a208"), {}},  {Item(Item::token, "a209"), {}},
+       {Item(Item::token, "a210"), {}},  {Item(Item::token, "a211"), {}},
+       {Item(Item::token, "a212"), {}},  {Item(Item::token, "a213"), {}},
+       {Item(Item::token, "a214"), {}},  {Item(Item::token, "a215"), {}},
+       {Item(Item::token, "a216"), {}},  {Item(Item::token, "a217"), {}},
+       {Item(Item::token, "a218"), {}},  {Item(Item::token, "a219"), {}},
+       {Item(Item::token, "a220"), {}},  {Item(Item::token, "a221"), {}},
+       {Item(Item::token, "a222"), {}},  {Item(Item::token, "a223"), {}},
+       {Item(Item::token, "a224"), {}},  {Item(Item::token, "a225"), {}},
+       {Item(Item::token, "a226"), {}},  {Item(Item::token, "a227"), {}},
+       {Item(Item::token, "a228"), {}},  {Item(Item::token, "a229"), {}},
+       {Item(Item::token, "a230"), {}},  {Item(Item::token, "a231"), {}},
+       {Item(Item::token, "a232"), {}},  {Item(Item::token, "a233"), {}},
+       {Item(Item::token, "a234"), {}},  {Item(Item::token, "a235"), {}},
+       {Item(Item::token, "a236"), {}},  {Item(Item::token, "a237"), {}},
+       {Item(Item::token, "a238"), {}},  {Item(Item::token, "a239"), {}},
+       {Item(Item::token, "a240"), {}},  {Item(Item::token, "a241"), {}},
+       {Item(Item::token, "a242"), {}},  {Item(Item::token, "a243"), {}},
+       {Item(Item::token, "a244"), {}},  {Item(Item::token, "a245"), {}},
+       {Item(Item::token, "a246"), {}},  {Item(Item::token, "a247"), {}},
+       {Item(Item::token, "a248"), {}},  {Item(Item::token, "a249"), {}},
+       {Item(Item::token, "a250"), {}},  {Item(Item::token, "a251"), {}},
+       {Item(Item::token, "a252"), {}},  {Item(Item::token, "a253"), {}},
+       {Item(Item::token, "a254"), {}},  {Item(Item::token, "a255"), {}},
+       {Item(Item::token, "a256"), {}},  {Item(Item::token, "a257"), {}},
+       {Item(Item::token, "a258"), {}},  {Item(Item::token, "a259"), {}},
+       {Item(Item::token, "a260"), {}},  {Item(Item::token, "a261"), {}},
+       {Item(Item::token, "a262"), {}},  {Item(Item::token, "a263"), {}},
+       {Item(Item::token, "a264"), {}},  {Item(Item::token, "a265"), {}},
+       {Item(Item::token, "a266"), {}},  {Item(Item::token, "a267"), {}},
+       {Item(Item::token, "a268"), {}},  {Item(Item::token, "a269"), {}},
+       {Item(Item::token, "a270"), {}},  {Item(Item::token, "a271"), {}},
+       {Item(Item::token, "a272"), {}},  {Item(Item::token, "a273"), {}},
+       {Item(Item::token, "a274"), {}},  {Item(Item::token, "a275"), {}},
+       {Item(Item::token, "a276"), {}},  {Item(Item::token, "a277"), {}},
+       {Item(Item::token, "a278"), {}},  {Item(Item::token, "a279"), {}},
+       {Item(Item::token, "a280"), {}},  {Item(Item::token, "a281"), {}},
+       {Item(Item::token, "a282"), {}},  {Item(Item::token, "a283"), {}},
+       {Item(Item::token, "a284"), {}},  {Item(Item::token, "a285"), {}},
+       {Item(Item::token, "a286"), {}},  {Item(Item::token, "a287"), {}},
+       {Item(Item::token, "a288"), {}},  {Item(Item::token, "a289"), {}},
+       {Item(Item::token, "a290"), {}},  {Item(Item::token, "a291"), {}},
+       {Item(Item::token, "a292"), {}},  {Item(Item::token, "a293"), {}},
+       {Item(Item::token, "a294"), {}},  {Item(Item::token, "a295"), {}},
+       {Item(Item::token, "a296"), {}},  {Item(Item::token, "a297"), {}},
+       {Item(Item::token, "a298"), {}},  {Item(Item::token, "a299"), {}},
+       {Item(Item::token, "a300"), {}},  {Item(Item::token, "a301"), {}},
+       {Item(Item::token, "a302"), {}},  {Item(Item::token, "a303"), {}},
+       {Item(Item::token, "a304"), {}},  {Item(Item::token, "a305"), {}},
+       {Item(Item::token, "a306"), {}},  {Item(Item::token, "a307"), {}},
+       {Item(Item::token, "a308"), {}},  {Item(Item::token, "a309"), {}},
+       {Item(Item::token, "a310"), {}},  {Item(Item::token, "a311"), {}},
+       {Item(Item::token, "a312"), {}},  {Item(Item::token, "a313"), {}},
+       {Item(Item::token, "a314"), {}},  {Item(Item::token, "a315"), {}},
+       {Item(Item::token, "a316"), {}},  {Item(Item::token, "a317"), {}},
+       {Item(Item::token, "a318"), {}},  {Item(Item::token, "a319"), {}},
+       {Item(Item::token, "a320"), {}},  {Item(Item::token, "a321"), {}},
+       {Item(Item::token, "a322"), {}},  {Item(Item::token, "a323"), {}},
+       {Item(Item::token, "a324"), {}},  {Item(Item::token, "a325"), {}},
+       {Item(Item::token, "a326"), {}},  {Item(Item::token, "a327"), {}},
+       {Item(Item::token, "a328"), {}},  {Item(Item::token, "a329"), {}},
+       {Item(Item::token, "a330"), {}},  {Item(Item::token, "a331"), {}},
+       {Item(Item::token, "a332"), {}},  {Item(Item::token, "a333"), {}},
+       {Item(Item::token, "a334"), {}},  {Item(Item::token, "a335"), {}},
+       {Item(Item::token, "a336"), {}},  {Item(Item::token, "a337"), {}},
+       {Item(Item::token, "a338"), {}},  {Item(Item::token, "a339"), {}},
+       {Item(Item::token, "a340"), {}},  {Item(Item::token, "a341"), {}},
+       {Item(Item::token, "a342"), {}},  {Item(Item::token, "a343"), {}},
+       {Item(Item::token, "a344"), {}},  {Item(Item::token, "a345"), {}},
+       {Item(Item::token, "a346"), {}},  {Item(Item::token, "a347"), {}},
+       {Item(Item::token, "a348"), {}},  {Item(Item::token, "a349"), {}},
+       {Item(Item::token, "a350"), {}},  {Item(Item::token, "a351"), {}},
+       {Item(Item::token, "a352"), {}},  {Item(Item::token, "a353"), {}},
+       {Item(Item::token, "a354"), {}},  {Item(Item::token, "a355"), {}},
+       {Item(Item::token, "a356"), {}},  {Item(Item::token, "a357"), {}},
+       {Item(Item::token, "a358"), {}},  {Item(Item::token, "a359"), {}},
+       {Item(Item::token, "a360"), {}},  {Item(Item::token, "a361"), {}},
+       {Item(Item::token, "a362"), {}},  {Item(Item::token, "a363"), {}},
+       {Item(Item::token, "a364"), {}},  {Item(Item::token, "a365"), {}},
+       {Item(Item::token, "a366"), {}},  {Item(Item::token, "a367"), {}},
+       {Item(Item::token, "a368"), {}},  {Item(Item::token, "a369"), {}},
+       {Item(Item::token, "a370"), {}},  {Item(Item::token, "a371"), {}},
+       {Item(Item::token, "a372"), {}},  {Item(Item::token, "a373"), {}},
+       {Item(Item::token, "a374"), {}},  {Item(Item::token, "a375"), {}},
+       {Item(Item::token, "a376"), {}},  {Item(Item::token, "a377"), {}},
+       {Item(Item::token, "a378"), {}},  {Item(Item::token, "a379"), {}},
+       {Item(Item::token, "a380"), {}},  {Item(Item::token, "a381"), {}},
+       {Item(Item::token, "a382"), {}},  {Item(Item::token, "a383"), {}},
+       {Item(Item::token, "a384"), {}},  {Item(Item::token, "a385"), {}},
+       {Item(Item::token, "a386"), {}},  {Item(Item::token, "a387"), {}},
+       {Item(Item::token, "a388"), {}},  {Item(Item::token, "a389"), {}},
+       {Item(Item::token, "a390"), {}},  {Item(Item::token, "a391"), {}},
+       {Item(Item::token, "a392"), {}},  {Item(Item::token, "a393"), {}},
+       {Item(Item::token, "a394"), {}},  {Item(Item::token, "a395"), {}},
+       {Item(Item::token, "a396"), {}},  {Item(Item::token, "a397"), {}},
+       {Item(Item::token, "a398"), {}},  {Item(Item::token, "a399"), {}},
+       {Item(Item::token, "a400"), {}},  {Item(Item::token, "a401"), {}},
+       {Item(Item::token, "a402"), {}},  {Item(Item::token, "a403"), {}},
+       {Item(Item::token, "a404"), {}},  {Item(Item::token, "a405"), {}},
+       {Item(Item::token, "a406"), {}},  {Item(Item::token, "a407"), {}},
+       {Item(Item::token, "a408"), {}},  {Item(Item::token, "a409"), {}},
+       {Item(Item::token, "a410"), {}},  {Item(Item::token, "a411"), {}},
+       {Item(Item::token, "a412"), {}},  {Item(Item::token, "a413"), {}},
+       {Item(Item::token, "a414"), {}},  {Item(Item::token, "a415"), {}},
+       {Item(Item::token, "a416"), {}},  {Item(Item::token, "a417"), {}},
+       {Item(Item::token, "a418"), {}},  {Item(Item::token, "a419"), {}},
+       {Item(Item::token, "a420"), {}},  {Item(Item::token, "a421"), {}},
+       {Item(Item::token, "a422"), {}},  {Item(Item::token, "a423"), {}},
+       {Item(Item::token, "a424"), {}},  {Item(Item::token, "a425"), {}},
+       {Item(Item::token, "a426"), {}},  {Item(Item::token, "a427"), {}},
+       {Item(Item::token, "a428"), {}},  {Item(Item::token, "a429"), {}},
+       {Item(Item::token, "a430"), {}},  {Item(Item::token, "a431"), {}},
+       {Item(Item::token, "a432"), {}},  {Item(Item::token, "a433"), {}},
+       {Item(Item::token, "a434"), {}},  {Item(Item::token, "a435"), {}},
+       {Item(Item::token, "a436"), {}},  {Item(Item::token, "a437"), {}},
+       {Item(Item::token, "a438"), {}},  {Item(Item::token, "a439"), {}},
+       {Item(Item::token, "a440"), {}},  {Item(Item::token, "a441"), {}},
+       {Item(Item::token, "a442"), {}},  {Item(Item::token, "a443"), {}},
+       {Item(Item::token, "a444"), {}},  {Item(Item::token, "a445"), {}},
+       {Item(Item::token, "a446"), {}},  {Item(Item::token, "a447"), {}},
+       {Item(Item::token, "a448"), {}},  {Item(Item::token, "a449"), {}},
+       {Item(Item::token, "a450"), {}},  {Item(Item::token, "a451"), {}},
+       {Item(Item::token, "a452"), {}},  {Item(Item::token, "a453"), {}},
+       {Item(Item::token, "a454"), {}},  {Item(Item::token, "a455"), {}},
+       {Item(Item::token, "a456"), {}},  {Item(Item::token, "a457"), {}},
+       {Item(Item::token, "a458"), {}},  {Item(Item::token, "a459"), {}},
+       {Item(Item::token, "a460"), {}},  {Item(Item::token, "a461"), {}},
+       {Item(Item::token, "a462"), {}},  {Item(Item::token, "a463"), {}},
+       {Item(Item::token, "a464"), {}},  {Item(Item::token, "a465"), {}},
+       {Item(Item::token, "a466"), {}},  {Item(Item::token, "a467"), {}},
+       {Item(Item::token, "a468"), {}},  {Item(Item::token, "a469"), {}},
+       {Item(Item::token, "a470"), {}},  {Item(Item::token, "a471"), {}},
+       {Item(Item::token, "a472"), {}},  {Item(Item::token, "a473"), {}},
+       {Item(Item::token, "a474"), {}},  {Item(Item::token, "a475"), {}},
+       {Item(Item::token, "a476"), {}},  {Item(Item::token, "a477"), {}},
+       {Item(Item::token, "a478"), {}},  {Item(Item::token, "a479"), {}},
+       {Item(Item::token, "a480"), {}},  {Item(Item::token, "a481"), {}},
+       {Item(Item::token, "a482"), {}},  {Item(Item::token, "a483"), {}},
+       {Item(Item::token, "a484"), {}},  {Item(Item::token, "a485"), {}},
+       {Item(Item::token, "a486"), {}},  {Item(Item::token, "a487"), {}},
+       {Item(Item::token, "a488"), {}},  {Item(Item::token, "a489"), {}},
+       {Item(Item::token, "a490"), {}},  {Item(Item::token, "a491"), {}},
+       {Item(Item::token, "a492"), {}},  {Item(Item::token, "a493"), {}},
+       {Item(Item::token, "a494"), {}},  {Item(Item::token, "a495"), {}},
+       {Item(Item::token, "a496"), {}},  {Item(Item::token, "a497"), {}},
+       {Item(Item::token, "a498"), {}},  {Item(Item::token, "a499"), {}},
+       {Item(Item::token, "a500"), {}},  {Item(Item::token, "a501"), {}},
+       {Item(Item::token, "a502"), {}},  {Item(Item::token, "a503"), {}},
+       {Item(Item::token, "a504"), {}},  {Item(Item::token, "a505"), {}},
+       {Item(Item::token, "a506"), {}},  {Item(Item::token, "a507"), {}},
+       {Item(Item::token, "a508"), {}},  {Item(Item::token, "a509"), {}},
+       {Item(Item::token, "a510"), {}},  {Item(Item::token, "a511"), {}},
+       {Item(Item::token, "a512"), {}},  {Item(Item::token, "a513"), {}},
+       {Item(Item::token, "a514"), {}},  {Item(Item::token, "a515"), {}},
+       {Item(Item::token, "a516"), {}},  {Item(Item::token, "a517"), {}},
+       {Item(Item::token, "a518"), {}},  {Item(Item::token, "a519"), {}},
+       {Item(Item::token, "a520"), {}},  {Item(Item::token, "a521"), {}},
+       {Item(Item::token, "a522"), {}},  {Item(Item::token, "a523"), {}},
+       {Item(Item::token, "a524"), {}},  {Item(Item::token, "a525"), {}},
+       {Item(Item::token, "a526"), {}},  {Item(Item::token, "a527"), {}},
+       {Item(Item::token, "a528"), {}},  {Item(Item::token, "a529"), {}},
+       {Item(Item::token, "a530"), {}},  {Item(Item::token, "a531"), {}},
+       {Item(Item::token, "a532"), {}},  {Item(Item::token, "a533"), {}},
+       {Item(Item::token, "a534"), {}},  {Item(Item::token, "a535"), {}},
+       {Item(Item::token, "a536"), {}},  {Item(Item::token, "a537"), {}},
+       {Item(Item::token, "a538"), {}},  {Item(Item::token, "a539"), {}},
+       {Item(Item::token, "a540"), {}},  {Item(Item::token, "a541"), {}},
+       {Item(Item::token, "a542"), {}},  {Item(Item::token, "a543"), {}},
+       {Item(Item::token, "a544"), {}},  {Item(Item::token, "a545"), {}},
+       {Item(Item::token, "a546"), {}},  {Item(Item::token, "a547"), {}},
+       {Item(Item::token, "a548"), {}},  {Item(Item::token, "a549"), {}},
+       {Item(Item::token, "a550"), {}},  {Item(Item::token, "a551"), {}},
+       {Item(Item::token, "a552"), {}},  {Item(Item::token, "a553"), {}},
+       {Item(Item::token, "a554"), {}},  {Item(Item::token, "a555"), {}},
+       {Item(Item::token, "a556"), {}},  {Item(Item::token, "a557"), {}},
+       {Item(Item::token, "a558"), {}},  {Item(Item::token, "a559"), {}},
+       {Item(Item::token, "a560"), {}},  {Item(Item::token, "a561"), {}},
+       {Item(Item::token, "a562"), {}},  {Item(Item::token, "a563"), {}},
+       {Item(Item::token, "a564"), {}},  {Item(Item::token, "a565"), {}},
+       {Item(Item::token, "a566"), {}},  {Item(Item::token, "a567"), {}},
+       {Item(Item::token, "a568"), {}},  {Item(Item::token, "a569"), {}},
+       {Item(Item::token, "a570"), {}},  {Item(Item::token, "a571"), {}},
+       {Item(Item::token, "a572"), {}},  {Item(Item::token, "a573"), {}},
+       {Item(Item::token, "a574"), {}},  {Item(Item::token, "a575"), {}},
+       {Item(Item::token, "a576"), {}},  {Item(Item::token, "a577"), {}},
+       {Item(Item::token, "a578"), {}},  {Item(Item::token, "a579"), {}},
+       {Item(Item::token, "a580"), {}},  {Item(Item::token, "a581"), {}},
+       {Item(Item::token, "a582"), {}},  {Item(Item::token, "a583"), {}},
+       {Item(Item::token, "a584"), {}},  {Item(Item::token, "a585"), {}},
+       {Item(Item::token, "a586"), {}},  {Item(Item::token, "a587"), {}},
+       {Item(Item::token, "a588"), {}},  {Item(Item::token, "a589"), {}},
+       {Item(Item::token, "a590"), {}},  {Item(Item::token, "a591"), {}},
+       {Item(Item::token, "a592"), {}},  {Item(Item::token, "a593"), {}},
+       {Item(Item::token, "a594"), {}},  {Item(Item::token, "a595"), {}},
+       {Item(Item::token, "a596"), {}},  {Item(Item::token, "a597"), {}},
+       {Item(Item::token, "a598"), {}},  {Item(Item::token, "a599"), {}},
+       {Item(Item::token, "a600"), {}},  {Item(Item::token, "a601"), {}},
+       {Item(Item::token, "a602"), {}},  {Item(Item::token, "a603"), {}},
+       {Item(Item::token, "a604"), {}},  {Item(Item::token, "a605"), {}},
+       {Item(Item::token, "a606"), {}},  {Item(Item::token, "a607"), {}},
+       {Item(Item::token, "a608"), {}},  {Item(Item::token, "a609"), {}},
+       {Item(Item::token, "a610"), {}},  {Item(Item::token, "a611"), {}},
+       {Item(Item::token, "a612"), {}},  {Item(Item::token, "a613"), {}},
+       {Item(Item::token, "a614"), {}},  {Item(Item::token, "a615"), {}},
+       {Item(Item::token, "a616"), {}},  {Item(Item::token, "a617"), {}},
+       {Item(Item::token, "a618"), {}},  {Item(Item::token, "a619"), {}},
+       {Item(Item::token, "a620"), {}},  {Item(Item::token, "a621"), {}},
+       {Item(Item::token, "a622"), {}},  {Item(Item::token, "a623"), {}},
+       {Item(Item::token, "a624"), {}},  {Item(Item::token, "a625"), {}},
+       {Item(Item::token, "a626"), {}},  {Item(Item::token, "a627"), {}},
+       {Item(Item::token, "a628"), {}},  {Item(Item::token, "a629"), {}},
+       {Item(Item::token, "a630"), {}},  {Item(Item::token, "a631"), {}},
+       {Item(Item::token, "a632"), {}},  {Item(Item::token, "a633"), {}},
+       {Item(Item::token, "a634"), {}},  {Item(Item::token, "a635"), {}},
+       {Item(Item::token, "a636"), {}},  {Item(Item::token, "a637"), {}},
+       {Item(Item::token, "a638"), {}},  {Item(Item::token, "a639"), {}},
+       {Item(Item::token, "a640"), {}},  {Item(Item::token, "a641"), {}},
+       {Item(Item::token, "a642"), {}},  {Item(Item::token, "a643"), {}},
+       {Item(Item::token, "a644"), {}},  {Item(Item::token, "a645"), {}},
+       {Item(Item::token, "a646"), {}},  {Item(Item::token, "a647"), {}},
+       {Item(Item::token, "a648"), {}},  {Item(Item::token, "a649"), {}},
+       {Item(Item::token, "a650"), {}},  {Item(Item::token, "a651"), {}},
+       {Item(Item::token, "a652"), {}},  {Item(Item::token, "a653"), {}},
+       {Item(Item::token, "a654"), {}},  {Item(Item::token, "a655"), {}},
+       {Item(Item::token, "a656"), {}},  {Item(Item::token, "a657"), {}},
+       {Item(Item::token, "a658"), {}},  {Item(Item::token, "a659"), {}},
+       {Item(Item::token, "a660"), {}},  {Item(Item::token, "a661"), {}},
+       {Item(Item::token, "a662"), {}},  {Item(Item::token, "a663"), {}},
+       {Item(Item::token, "a664"), {}},  {Item(Item::token, "a665"), {}},
+       {Item(Item::token, "a666"), {}},  {Item(Item::token, "a667"), {}},
+       {Item(Item::token, "a668"), {}},  {Item(Item::token, "a669"), {}},
+       {Item(Item::token, "a670"), {}},  {Item(Item::token, "a671"), {}},
+       {Item(Item::token, "a672"), {}},  {Item(Item::token, "a673"), {}},
+       {Item(Item::token, "a674"), {}},  {Item(Item::token, "a675"), {}},
+       {Item(Item::token, "a676"), {}},  {Item(Item::token, "a677"), {}},
+       {Item(Item::token, "a678"), {}},  {Item(Item::token, "a679"), {}},
+       {Item(Item::token, "a680"), {}},  {Item(Item::token, "a681"), {}},
+       {Item(Item::token, "a682"), {}},  {Item(Item::token, "a683"), {}},
+       {Item(Item::token, "a684"), {}},  {Item(Item::token, "a685"), {}},
+       {Item(Item::token, "a686"), {}},  {Item(Item::token, "a687"), {}},
+       {Item(Item::token, "a688"), {}},  {Item(Item::token, "a689"), {}},
+       {Item(Item::token, "a690"), {}},  {Item(Item::token, "a691"), {}},
+       {Item(Item::token, "a692"), {}},  {Item(Item::token, "a693"), {}},
+       {Item(Item::token, "a694"), {}},  {Item(Item::token, "a695"), {}},
+       {Item(Item::token, "a696"), {}},  {Item(Item::token, "a697"), {}},
+       {Item(Item::token, "a698"), {}},  {Item(Item::token, "a699"), {}},
+       {Item(Item::token, "a700"), {}},  {Item(Item::token, "a701"), {}},
+       {Item(Item::token, "a702"), {}},  {Item(Item::token, "a703"), {}},
+       {Item(Item::token, "a704"), {}},  {Item(Item::token, "a705"), {}},
+       {Item(Item::token, "a706"), {}},  {Item(Item::token, "a707"), {}},
+       {Item(Item::token, "a708"), {}},  {Item(Item::token, "a709"), {}},
+       {Item(Item::token, "a710"), {}},  {Item(Item::token, "a711"), {}},
+       {Item(Item::token, "a712"), {}},  {Item(Item::token, "a713"), {}},
+       {Item(Item::token, "a714"), {}},  {Item(Item::token, "a715"), {}},
+       {Item(Item::token, "a716"), {}},  {Item(Item::token, "a717"), {}},
+       {Item(Item::token, "a718"), {}},  {Item(Item::token, "a719"), {}},
+       {Item(Item::token, "a720"), {}},  {Item(Item::token, "a721"), {}},
+       {Item(Item::token, "a722"), {}},  {Item(Item::token, "a723"), {}},
+       {Item(Item::token, "a724"), {}},  {Item(Item::token, "a725"), {}},
+       {Item(Item::token, "a726"), {}},  {Item(Item::token, "a727"), {}},
+       {Item(Item::token, "a728"), {}},  {Item(Item::token, "a729"), {}},
+       {Item(Item::token, "a730"), {}},  {Item(Item::token, "a731"), {}},
+       {Item(Item::token, "a732"), {}},  {Item(Item::token, "a733"), {}},
+       {Item(Item::token, "a734"), {}},  {Item(Item::token, "a735"), {}},
+       {Item(Item::token, "a736"), {}},  {Item(Item::token, "a737"), {}},
+       {Item(Item::token, "a738"), {}},  {Item(Item::token, "a739"), {}},
+       {Item(Item::token, "a740"), {}},  {Item(Item::token, "a741"), {}},
+       {Item(Item::token, "a742"), {}},  {Item(Item::token, "a743"), {}},
+       {Item(Item::token, "a744"), {}},  {Item(Item::token, "a745"), {}},
+       {Item(Item::token, "a746"), {}},  {Item(Item::token, "a747"), {}},
+       {Item(Item::token, "a748"), {}},  {Item(Item::token, "a749"), {}},
+       {Item(Item::token, "a750"), {}},  {Item(Item::token, "a751"), {}},
+       {Item(Item::token, "a752"), {}},  {Item(Item::token, "a753"), {}},
+       {Item(Item::token, "a754"), {}},  {Item(Item::token, "a755"), {}},
+       {Item(Item::token, "a756"), {}},  {Item(Item::token, "a757"), {}},
+       {Item(Item::token, "a758"), {}},  {Item(Item::token, "a759"), {}},
+       {Item(Item::token, "a760"), {}},  {Item(Item::token, "a761"), {}},
+       {Item(Item::token, "a762"), {}},  {Item(Item::token, "a763"), {}},
+       {Item(Item::token, "a764"), {}},  {Item(Item::token, "a765"), {}},
+       {Item(Item::token, "a766"), {}},  {Item(Item::token, "a767"), {}},
+       {Item(Item::token, "a768"), {}},  {Item(Item::token, "a769"), {}},
+       {Item(Item::token, "a770"), {}},  {Item(Item::token, "a771"), {}},
+       {Item(Item::token, "a772"), {}},  {Item(Item::token, "a773"), {}},
+       {Item(Item::token, "a774"), {}},  {Item(Item::token, "a775"), {}},
+       {Item(Item::token, "a776"), {}},  {Item(Item::token, "a777"), {}},
+       {Item(Item::token, "a778"), {}},  {Item(Item::token, "a779"), {}},
+       {Item(Item::token, "a780"), {}},  {Item(Item::token, "a781"), {}},
+       {Item(Item::token, "a782"), {}},  {Item(Item::token, "a783"), {}},
+       {Item(Item::token, "a784"), {}},  {Item(Item::token, "a785"), {}},
+       {Item(Item::token, "a786"), {}},  {Item(Item::token, "a787"), {}},
+       {Item(Item::token, "a788"), {}},  {Item(Item::token, "a789"), {}},
+       {Item(Item::token, "a790"), {}},  {Item(Item::token, "a791"), {}},
+       {Item(Item::token, "a792"), {}},  {Item(Item::token, "a793"), {}},
+       {Item(Item::token, "a794"), {}},  {Item(Item::token, "a795"), {}},
+       {Item(Item::token, "a796"), {}},  {Item(Item::token, "a797"), {}},
+       {Item(Item::token, "a798"), {}},  {Item(Item::token, "a799"), {}},
+       {Item(Item::token, "a800"), {}},  {Item(Item::token, "a801"), {}},
+       {Item(Item::token, "a802"), {}},  {Item(Item::token, "a803"), {}},
+       {Item(Item::token, "a804"), {}},  {Item(Item::token, "a805"), {}},
+       {Item(Item::token, "a806"), {}},  {Item(Item::token, "a807"), {}},
+       {Item(Item::token, "a808"), {}},  {Item(Item::token, "a809"), {}},
+       {Item(Item::token, "a810"), {}},  {Item(Item::token, "a811"), {}},
+       {Item(Item::token, "a812"), {}},  {Item(Item::token, "a813"), {}},
+       {Item(Item::token, "a814"), {}},  {Item(Item::token, "a815"), {}},
+       {Item(Item::token, "a816"), {}},  {Item(Item::token, "a817"), {}},
+       {Item(Item::token, "a818"), {}},  {Item(Item::token, "a819"), {}},
+       {Item(Item::token, "a820"), {}},  {Item(Item::token, "a821"), {}},
+       {Item(Item::token, "a822"), {}},  {Item(Item::token, "a823"), {}},
+       {Item(Item::token, "a824"), {}},  {Item(Item::token, "a825"), {}},
+       {Item(Item::token, "a826"), {}},  {Item(Item::token, "a827"), {}},
+       {Item(Item::token, "a828"), {}},  {Item(Item::token, "a829"), {}},
+       {Item(Item::token, "a830"), {}},  {Item(Item::token, "a831"), {}},
+       {Item(Item::token, "a832"), {}},  {Item(Item::token, "a833"), {}},
+       {Item(Item::token, "a834"), {}},  {Item(Item::token, "a835"), {}},
+       {Item(Item::token, "a836"), {}},  {Item(Item::token, "a837"), {}},
+       {Item(Item::token, "a838"), {}},  {Item(Item::token, "a839"), {}},
+       {Item(Item::token, "a840"), {}},  {Item(Item::token, "a841"), {}},
+       {Item(Item::token, "a842"), {}},  {Item(Item::token, "a843"), {}},
+       {Item(Item::token, "a844"), {}},  {Item(Item::token, "a845"), {}},
+       {Item(Item::token, "a846"), {}},  {Item(Item::token, "a847"), {}},
+       {Item(Item::token, "a848"), {}},  {Item(Item::token, "a849"), {}},
+       {Item(Item::token, "a850"), {}},  {Item(Item::token, "a851"), {}},
+       {Item(Item::token, "a852"), {}},  {Item(Item::token, "a853"), {}},
+       {Item(Item::token, "a854"), {}},  {Item(Item::token, "a855"), {}},
+       {Item(Item::token, "a856"), {}},  {Item(Item::token, "a857"), {}},
+       {Item(Item::token, "a858"), {}},  {Item(Item::token, "a859"), {}},
+       {Item(Item::token, "a860"), {}},  {Item(Item::token, "a861"), {}},
+       {Item(Item::token, "a862"), {}},  {Item(Item::token, "a863"), {}},
+       {Item(Item::token, "a864"), {}},  {Item(Item::token, "a865"), {}},
+       {Item(Item::token, "a866"), {}},  {Item(Item::token, "a867"), {}},
+       {Item(Item::token, "a868"), {}},  {Item(Item::token, "a869"), {}},
+       {Item(Item::token, "a870"), {}},  {Item(Item::token, "a871"), {}},
+       {Item(Item::token, "a872"), {}},  {Item(Item::token, "a873"), {}},
+       {Item(Item::token, "a874"), {}},  {Item(Item::token, "a875"), {}},
+       {Item(Item::token, "a876"), {}},  {Item(Item::token, "a877"), {}},
+       {Item(Item::token, "a878"), {}},  {Item(Item::token, "a879"), {}},
+       {Item(Item::token, "a880"), {}},  {Item(Item::token, "a881"), {}},
+       {Item(Item::token, "a882"), {}},  {Item(Item::token, "a883"), {}},
+       {Item(Item::token, "a884"), {}},  {Item(Item::token, "a885"), {}},
+       {Item(Item::token, "a886"), {}},  {Item(Item::token, "a887"), {}},
+       {Item(Item::token, "a888"), {}},  {Item(Item::token, "a889"), {}},
+       {Item(Item::token, "a890"), {}},  {Item(Item::token, "a891"), {}},
+       {Item(Item::token, "a892"), {}},  {Item(Item::token, "a893"), {}},
+       {Item(Item::token, "a894"), {}},  {Item(Item::token, "a895"), {}},
+       {Item(Item::token, "a896"), {}},  {Item(Item::token, "a897"), {}},
+       {Item(Item::token, "a898"), {}},  {Item(Item::token, "a899"), {}},
+       {Item(Item::token, "a900"), {}},  {Item(Item::token, "a901"), {}},
+       {Item(Item::token, "a902"), {}},  {Item(Item::token, "a903"), {}},
+       {Item(Item::token, "a904"), {}},  {Item(Item::token, "a905"), {}},
+       {Item(Item::token, "a906"), {}},  {Item(Item::token, "a907"), {}},
+       {Item(Item::token, "a908"), {}},  {Item(Item::token, "a909"), {}},
+       {Item(Item::token, "a910"), {}},  {Item(Item::token, "a911"), {}},
+       {Item(Item::token, "a912"), {}},  {Item(Item::token, "a913"), {}},
+       {Item(Item::token, "a914"), {}},  {Item(Item::token, "a915"), {}},
+       {Item(Item::token, "a916"), {}},  {Item(Item::token, "a917"), {}},
+       {Item(Item::token, "a918"), {}},  {Item(Item::token, "a919"), {}},
+       {Item(Item::token, "a920"), {}},  {Item(Item::token, "a921"), {}},
+       {Item(Item::token, "a922"), {}},  {Item(Item::token, "a923"), {}},
+       {Item(Item::token, "a924"), {}},  {Item(Item::token, "a925"), {}},
+       {Item(Item::token, "a926"), {}},  {Item(Item::token, "a927"), {}},
+       {Item(Item::token, "a928"), {}},  {Item(Item::token, "a929"), {}},
+       {Item(Item::token, "a930"), {}},  {Item(Item::token, "a931"), {}},
+       {Item(Item::token, "a932"), {}},  {Item(Item::token, "a933"), {}},
+       {Item(Item::token, "a934"), {}},  {Item(Item::token, "a935"), {}},
+       {Item(Item::token, "a936"), {}},  {Item(Item::token, "a937"), {}},
+       {Item(Item::token, "a938"), {}},  {Item(Item::token, "a939"), {}},
+       {Item(Item::token, "a940"), {}},  {Item(Item::token, "a941"), {}},
+       {Item(Item::token, "a942"), {}},  {Item(Item::token, "a943"), {}},
+       {Item(Item::token, "a944"), {}},  {Item(Item::token, "a945"), {}},
+       {Item(Item::token, "a946"), {}},  {Item(Item::token, "a947"), {}},
+       {Item(Item::token, "a948"), {}},  {Item(Item::token, "a949"), {}},
+       {Item(Item::token, "a950"), {}},  {Item(Item::token, "a951"), {}},
+       {Item(Item::token, "a952"), {}},  {Item(Item::token, "a953"), {}},
+       {Item(Item::token, "a954"), {}},  {Item(Item::token, "a955"), {}},
+       {Item(Item::token, "a956"), {}},  {Item(Item::token, "a957"), {}},
+       {Item(Item::token, "a958"), {}},  {Item(Item::token, "a959"), {}},
+       {Item(Item::token, "a960"), {}},  {Item(Item::token, "a961"), {}},
+       {Item(Item::token, "a962"), {}},  {Item(Item::token, "a963"), {}},
+       {Item(Item::token, "a964"), {}},  {Item(Item::token, "a965"), {}},
+       {Item(Item::token, "a966"), {}},  {Item(Item::token, "a967"), {}},
+       {Item(Item::token, "a968"), {}},  {Item(Item::token, "a969"), {}},
+       {Item(Item::token, "a970"), {}},  {Item(Item::token, "a971"), {}},
+       {Item(Item::token, "a972"), {}},  {Item(Item::token, "a973"), {}},
+       {Item(Item::token, "a974"), {}},  {Item(Item::token, "a975"), {}},
+       {Item(Item::token, "a976"), {}},  {Item(Item::token, "a977"), {}},
+       {Item(Item::token, "a978"), {}},  {Item(Item::token, "a979"), {}},
+       {Item(Item::token, "a980"), {}},  {Item(Item::token, "a981"), {}},
+       {Item(Item::token, "a982"), {}},  {Item(Item::token, "a983"), {}},
+       {Item(Item::token, "a984"), {}},  {Item(Item::token, "a985"), {}},
+       {Item(Item::token, "a986"), {}},  {Item(Item::token, "a987"), {}},
+       {Item(Item::token, "a988"), {}},  {Item(Item::token, "a989"), {}},
+       {Item(Item::token, "a990"), {}},  {Item(Item::token, "a991"), {}},
+       {Item(Item::token, "a992"), {}},  {Item(Item::token, "a993"), {}},
+       {Item(Item::token, "a994"), {}},  {Item(Item::token, "a995"), {}},
+       {Item(Item::token, "a996"), {}},  {Item(Item::token, "a997"), {}},
+       {Item(Item::token, "a998"), {}},  {Item(Item::token, "a999"), {}},
+       {Item(Item::token, "a1000"), {}}, {Item(Item::token, "a1001"), {}},
+       {Item(Item::token, "a1002"), {}}, {Item(Item::token, "a1003"), {}},
+       {Item(Item::token, "a1004"), {}}, {Item(Item::token, "a1005"), {}},
+       {Item(Item::token, "a1006"), {}}, {Item(Item::token, "a1007"), {}},
+       {Item(Item::token, "a1008"), {}}, {Item(Item::token, "a1009"), {}},
+       {Item(Item::token, "a1010"), {}}, {Item(Item::token, "a1011"), {}},
+       {Item(Item::token, "a1012"), {}}, {Item(Item::token, "a1013"), {}},
+       {Item(Item::token, "a1014"), {}}, {Item(Item::token, "a1015"), {}},
+       {Item(Item::token, "a1016"), {}}, {Item(Item::token, "a1017"), {}},
+       {Item(Item::token, "a1018"), {}}, {Item(Item::token, "a1019"), {}},
+       {Item(Item::token, "a1020"), {}}, {Item(Item::token, "a1021"), {}},
+       {Item(Item::token, "a1022"), {}}, {Item(Item::token, "a1023"), {}}}},
      nullptr},
     {"large parameterised list",
      "foo;a0=1, foo;a1=1, foo;a2=1, foo;a3=1, foo;a4=1, foo;a5=1, foo;a6=1, "
@@ -4528,1030 +4400,1030 @@
      "foo;a1017=1, foo;a1018=1, foo;a1019=1, foo;a1020=1, foo;a1021=1, "
      "foo;a1022=1, foo;a1023=1",
      12200,
-     {{{Item("foo", Item::kTokenType), {Param("a0", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a2", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a3", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a4", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a5", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a6", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a7", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a8", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a9", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a10", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a11", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a12", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a13", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a14", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a15", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a16", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a17", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a18", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a19", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a20", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a21", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a22", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a23", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a24", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a25", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a26", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a27", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a28", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a29", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a30", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a31", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a32", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a33", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a34", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a35", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a36", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a37", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a38", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a39", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a40", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a41", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a42", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a43", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a44", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a45", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a46", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a47", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a48", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a49", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a50", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a51", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a52", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a53", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a54", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a55", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a56", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a57", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a58", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a59", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a60", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a61", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a62", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a63", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a64", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a65", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a66", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a67", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a68", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a69", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a70", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a71", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a72", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a73", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a74", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a75", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a76", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a77", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a78", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a79", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a80", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a81", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a82", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a83", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a84", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a85", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a86", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a87", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a88", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a89", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a90", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a91", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a92", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a93", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a94", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a95", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a96", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a97", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a98", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a99", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a100", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a101", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a102", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a103", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a104", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a105", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a106", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a107", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a108", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a109", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a110", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a111", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a112", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a113", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a114", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a115", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a116", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a117", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a118", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a119", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a120", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a121", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a122", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a123", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a124", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a125", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a126", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a127", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a128", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a129", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a130", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a131", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a132", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a133", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a134", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a135", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a136", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a137", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a138", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a139", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a140", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a141", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a142", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a143", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a144", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a145", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a146", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a147", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a148", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a149", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a150", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a151", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a152", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a153", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a154", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a155", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a156", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a157", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a158", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a159", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a160", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a161", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a162", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a163", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a164", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a165", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a166", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a167", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a168", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a169", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a170", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a171", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a172", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a173", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a174", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a175", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a176", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a177", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a178", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a179", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a180", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a181", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a182", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a183", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a184", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a185", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a186", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a187", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a188", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a189", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a190", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a191", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a192", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a193", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a194", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a195", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a196", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a197", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a198", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a199", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a200", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a201", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a202", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a203", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a204", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a205", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a206", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a207", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a208", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a209", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a210", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a211", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a212", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a213", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a214", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a215", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a216", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a217", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a218", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a219", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a220", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a221", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a222", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a223", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a224", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a225", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a226", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a227", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a228", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a229", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a230", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a231", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a232", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a233", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a234", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a235", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a236", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a237", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a238", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a239", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a240", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a241", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a242", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a243", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a244", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a245", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a246", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a247", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a248", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a249", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a250", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a251", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a252", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a253", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a254", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a255", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a256", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a257", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a258", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a259", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a260", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a261", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a262", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a263", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a264", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a265", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a266", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a267", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a268", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a269", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a270", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a271", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a272", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a273", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a274", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a275", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a276", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a277", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a278", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a279", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a280", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a281", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a282", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a283", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a284", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a285", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a286", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a287", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a288", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a289", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a290", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a291", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a292", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a293", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a294", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a295", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a296", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a297", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a298", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a299", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a300", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a301", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a302", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a303", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a304", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a305", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a306", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a307", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a308", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a309", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a310", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a311", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a312", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a313", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a314", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a315", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a316", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a317", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a318", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a319", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a320", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a321", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a322", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a323", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a324", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a325", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a326", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a327", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a328", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a329", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a330", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a331", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a332", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a333", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a334", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a335", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a336", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a337", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a338", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a339", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a340", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a341", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a342", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a343", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a344", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a345", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a346", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a347", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a348", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a349", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a350", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a351", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a352", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a353", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a354", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a355", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a356", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a357", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a358", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a359", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a360", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a361", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a362", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a363", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a364", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a365", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a366", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a367", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a368", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a369", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a370", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a371", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a372", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a373", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a374", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a375", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a376", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a377", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a378", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a379", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a380", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a381", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a382", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a383", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a384", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a385", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a386", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a387", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a388", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a389", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a390", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a391", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a392", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a393", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a394", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a395", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a396", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a397", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a398", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a399", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a400", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a401", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a402", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a403", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a404", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a405", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a406", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a407", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a408", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a409", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a410", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a411", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a412", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a413", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a414", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a415", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a416", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a417", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a418", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a419", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a420", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a421", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a422", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a423", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a424", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a425", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a426", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a427", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a428", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a429", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a430", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a431", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a432", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a433", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a434", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a435", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a436", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a437", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a438", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a439", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a440", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a441", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a442", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a443", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a444", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a445", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a446", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a447", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a448", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a449", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a450", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a451", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a452", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a453", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a454", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a455", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a456", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a457", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a458", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a459", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a460", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a461", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a462", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a463", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a464", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a465", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a466", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a467", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a468", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a469", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a470", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a471", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a472", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a473", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a474", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a475", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a476", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a477", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a478", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a479", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a480", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a481", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a482", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a483", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a484", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a485", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a486", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a487", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a488", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a489", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a490", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a491", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a492", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a493", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a494", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a495", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a496", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a497", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a498", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a499", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a500", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a501", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a502", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a503", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a504", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a505", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a506", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a507", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a508", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a509", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a510", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a511", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a512", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a513", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a514", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a515", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a516", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a517", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a518", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a519", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a520", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a521", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a522", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a523", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a524", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a525", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a526", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a527", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a528", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a529", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a530", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a531", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a532", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a533", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a534", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a535", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a536", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a537", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a538", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a539", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a540", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a541", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a542", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a543", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a544", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a545", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a546", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a547", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a548", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a549", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a550", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a551", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a552", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a553", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a554", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a555", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a556", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a557", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a558", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a559", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a560", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a561", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a562", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a563", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a564", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a565", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a566", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a567", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a568", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a569", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a570", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a571", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a572", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a573", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a574", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a575", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a576", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a577", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a578", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a579", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a580", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a581", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a582", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a583", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a584", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a585", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a586", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a587", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a588", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a589", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a590", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a591", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a592", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a593", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a594", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a595", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a596", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a597", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a598", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a599", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a600", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a601", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a602", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a603", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a604", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a605", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a606", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a607", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a608", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a609", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a610", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a611", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a612", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a613", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a614", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a615", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a616", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a617", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a618", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a619", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a620", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a621", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a622", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a623", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a624", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a625", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a626", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a627", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a628", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a629", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a630", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a631", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a632", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a633", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a634", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a635", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a636", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a637", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a638", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a639", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a640", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a641", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a642", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a643", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a644", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a645", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a646", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a647", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a648", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a649", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a650", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a651", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a652", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a653", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a654", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a655", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a656", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a657", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a658", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a659", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a660", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a661", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a662", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a663", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a664", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a665", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a666", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a667", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a668", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a669", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a670", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a671", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a672", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a673", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a674", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a675", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a676", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a677", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a678", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a679", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a680", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a681", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a682", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a683", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a684", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a685", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a686", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a687", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a688", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a689", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a690", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a691", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a692", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a693", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a694", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a695", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a696", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a697", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a698", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a699", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a700", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a701", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a702", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a703", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a704", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a705", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a706", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a707", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a708", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a709", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a710", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a711", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a712", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a713", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a714", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a715", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a716", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a717", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a718", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a719", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a720", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a721", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a722", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a723", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a724", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a725", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a726", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a727", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a728", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a729", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a730", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a731", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a732", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a733", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a734", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a735", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a736", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a737", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a738", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a739", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a740", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a741", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a742", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a743", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a744", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a745", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a746", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a747", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a748", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a749", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a750", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a751", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a752", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a753", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a754", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a755", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a756", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a757", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a758", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a759", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a760", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a761", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a762", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a763", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a764", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a765", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a766", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a767", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a768", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a769", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a770", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a771", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a772", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a773", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a774", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a775", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a776", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a777", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a778", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a779", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a780", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a781", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a782", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a783", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a784", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a785", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a786", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a787", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a788", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a789", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a790", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a791", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a792", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a793", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a794", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a795", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a796", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a797", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a798", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a799", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a800", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a801", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a802", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a803", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a804", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a805", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a806", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a807", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a808", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a809", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a810", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a811", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a812", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a813", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a814", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a815", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a816", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a817", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a818", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a819", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a820", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a821", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a822", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a823", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a824", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a825", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a826", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a827", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a828", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a829", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a830", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a831", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a832", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a833", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a834", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a835", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a836", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a837", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a838", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a839", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a840", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a841", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a842", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a843", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a844", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a845", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a846", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a847", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a848", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a849", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a850", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a851", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a852", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a853", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a854", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a855", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a856", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a857", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a858", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a859", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a860", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a861", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a862", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a863", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a864", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a865", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a866", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a867", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a868", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a869", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a870", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a871", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a872", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a873", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a874", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a875", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a876", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a877", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a878", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a879", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a880", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a881", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a882", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a883", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a884", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a885", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a886", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a887", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a888", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a889", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a890", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a891", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a892", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a893", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a894", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a895", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a896", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a897", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a898", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a899", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a900", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a901", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a902", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a903", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a904", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a905", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a906", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a907", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a908", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a909", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a910", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a911", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a912", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a913", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a914", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a915", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a916", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a917", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a918", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a919", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a920", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a921", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a922", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a923", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a924", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a925", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a926", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a927", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a928", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a929", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a930", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a931", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a932", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a933", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a934", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a935", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a936", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a937", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a938", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a939", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a940", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a941", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a942", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a943", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a944", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a945", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a946", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a947", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a948", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a949", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a950", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a951", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a952", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a953", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a954", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a955", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a956", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a957", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a958", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a959", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a960", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a961", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a962", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a963", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a964", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a965", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a966", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a967", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a968", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a969", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a970", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a971", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a972", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a973", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a974", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a975", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a976", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a977", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a978", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a979", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a980", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a981", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a982", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a983", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a984", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a985", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a986", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a987", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a988", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a989", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a990", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a991", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a992", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a993", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a994", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a995", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a996", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a997", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a998", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a999", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1000", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1001", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1002", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1003", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1004", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1005", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1006", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1007", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1008", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1009", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1010", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1011", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1012", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1013", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1014", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1015", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1016", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1017", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1018", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1019", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1020", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1021", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1022", 1)}},
-       {Item("foo", Item::kTokenType), {Param("a1023", 1)}}}},
+     {{{Item(Item::token, "foo"), {Param("a0", 1)}},
+       {Item(Item::token, "foo"), {Param("a1", 1)}},
+       {Item(Item::token, "foo"), {Param("a2", 1)}},
+       {Item(Item::token, "foo"), {Param("a3", 1)}},
+       {Item(Item::token, "foo"), {Param("a4", 1)}},
+       {Item(Item::token, "foo"), {Param("a5", 1)}},
+       {Item(Item::token, "foo"), {Param("a6", 1)}},
+       {Item(Item::token, "foo"), {Param("a7", 1)}},
+       {Item(Item::token, "foo"), {Param("a8", 1)}},
+       {Item(Item::token, "foo"), {Param("a9", 1)}},
+       {Item(Item::token, "foo"), {Param("a10", 1)}},
+       {Item(Item::token, "foo"), {Param("a11", 1)}},
+       {Item(Item::token, "foo"), {Param("a12", 1)}},
+       {Item(Item::token, "foo"), {Param("a13", 1)}},
+       {Item(Item::token, "foo"), {Param("a14", 1)}},
+       {Item(Item::token, "foo"), {Param("a15", 1)}},
+       {Item(Item::token, "foo"), {Param("a16", 1)}},
+       {Item(Item::token, "foo"), {Param("a17", 1)}},
+       {Item(Item::token, "foo"), {Param("a18", 1)}},
+       {Item(Item::token, "foo"), {Param("a19", 1)}},
+       {Item(Item::token, "foo"), {Param("a20", 1)}},
+       {Item(Item::token, "foo"), {Param("a21", 1)}},
+       {Item(Item::token, "foo"), {Param("a22", 1)}},
+       {Item(Item::token, "foo"), {Param("a23", 1)}},
+       {Item(Item::token, "foo"), {Param("a24", 1)}},
+       {Item(Item::token, "foo"), {Param("a25", 1)}},
+       {Item(Item::token, "foo"), {Param("a26", 1)}},
+       {Item(Item::token, "foo"), {Param("a27", 1)}},
+       {Item(Item::token, "foo"), {Param("a28", 1)}},
+       {Item(Item::token, "foo"), {Param("a29", 1)}},
+       {Item(Item::token, "foo"), {Param("a30", 1)}},
+       {Item(Item::token, "foo"), {Param("a31", 1)}},
+       {Item(Item::token, "foo"), {Param("a32", 1)}},
+       {Item(Item::token, "foo"), {Param("a33", 1)}},
+       {Item(Item::token, "foo"), {Param("a34", 1)}},
+       {Item(Item::token, "foo"), {Param("a35", 1)}},
+       {Item(Item::token, "foo"), {Param("a36", 1)}},
+       {Item(Item::token, "foo"), {Param("a37", 1)}},
+       {Item(Item::token, "foo"), {Param("a38", 1)}},
+       {Item(Item::token, "foo"), {Param("a39", 1)}},
+       {Item(Item::token, "foo"), {Param("a40", 1)}},
+       {Item(Item::token, "foo"), {Param("a41", 1)}},
+       {Item(Item::token, "foo"), {Param("a42", 1)}},
+       {Item(Item::token, "foo"), {Param("a43", 1)}},
+       {Item(Item::token, "foo"), {Param("a44", 1)}},
+       {Item(Item::token, "foo"), {Param("a45", 1)}},
+       {Item(Item::token, "foo"), {Param("a46", 1)}},
+       {Item(Item::token, "foo"), {Param("a47", 1)}},
+       {Item(Item::token, "foo"), {Param("a48", 1)}},
+       {Item(Item::token, "foo"), {Param("a49", 1)}},
+       {Item(Item::token, "foo"), {Param("a50", 1)}},
+       {Item(Item::token, "foo"), {Param("a51", 1)}},
+       {Item(Item::token, "foo"), {Param("a52", 1)}},
+       {Item(Item::token, "foo"), {Param("a53", 1)}},
+       {Item(Item::token, "foo"), {Param("a54", 1)}},
+       {Item(Item::token, "foo"), {Param("a55", 1)}},
+       {Item(Item::token, "foo"), {Param("a56", 1)}},
+       {Item(Item::token, "foo"), {Param("a57", 1)}},
+       {Item(Item::token, "foo"), {Param("a58", 1)}},
+       {Item(Item::token, "foo"), {Param("a59", 1)}},
+       {Item(Item::token, "foo"), {Param("a60", 1)}},
+       {Item(Item::token, "foo"), {Param("a61", 1)}},
+       {Item(Item::token, "foo"), {Param("a62", 1)}},
+       {Item(Item::token, "foo"), {Param("a63", 1)}},
+       {Item(Item::token, "foo"), {Param("a64", 1)}},
+       {Item(Item::token, "foo"), {Param("a65", 1)}},
+       {Item(Item::token, "foo"), {Param("a66", 1)}},
+       {Item(Item::token, "foo"), {Param("a67", 1)}},
+       {Item(Item::token, "foo"), {Param("a68", 1)}},
+       {Item(Item::token, "foo"), {Param("a69", 1)}},
+       {Item(Item::token, "foo"), {Param("a70", 1)}},
+       {Item(Item::token, "foo"), {Param("a71", 1)}},
+       {Item(Item::token, "foo"), {Param("a72", 1)}},
+       {Item(Item::token, "foo"), {Param("a73", 1)}},
+       {Item(Item::token, "foo"), {Param("a74", 1)}},
+       {Item(Item::token, "foo"), {Param("a75", 1)}},
+       {Item(Item::token, "foo"), {Param("a76", 1)}},
+       {Item(Item::token, "foo"), {Param("a77", 1)}},
+       {Item(Item::token, "foo"), {Param("a78", 1)}},
+       {Item(Item::token, "foo"), {Param("a79", 1)}},
+       {Item(Item::token, "foo"), {Param("a80", 1)}},
+       {Item(Item::token, "foo"), {Param("a81", 1)}},
+       {Item(Item::token, "foo"), {Param("a82", 1)}},
+       {Item(Item::token, "foo"), {Param("a83", 1)}},
+       {Item(Item::token, "foo"), {Param("a84", 1)}},
+       {Item(Item::token, "foo"), {Param("a85", 1)}},
+       {Item(Item::token, "foo"), {Param("a86", 1)}},
+       {Item(Item::token, "foo"), {Param("a87", 1)}},
+       {Item(Item::token, "foo"), {Param("a88", 1)}},
+       {Item(Item::token, "foo"), {Param("a89", 1)}},
+       {Item(Item::token, "foo"), {Param("a90", 1)}},
+       {Item(Item::token, "foo"), {Param("a91", 1)}},
+       {Item(Item::token, "foo"), {Param("a92", 1)}},
+       {Item(Item::token, "foo"), {Param("a93", 1)}},
+       {Item(Item::token, "foo"), {Param("a94", 1)}},
+       {Item(Item::token, "foo"), {Param("a95", 1)}},
+       {Item(Item::token, "foo"), {Param("a96", 1)}},
+       {Item(Item::token, "foo"), {Param("a97", 1)}},
+       {Item(Item::token, "foo"), {Param("a98", 1)}},
+       {Item(Item::token, "foo"), {Param("a99", 1)}},
+       {Item(Item::token, "foo"), {Param("a100", 1)}},
+       {Item(Item::token, "foo"), {Param("a101", 1)}},
+       {Item(Item::token, "foo"), {Param("a102", 1)}},
+       {Item(Item::token, "foo"), {Param("a103", 1)}},
+       {Item(Item::token, "foo"), {Param("a104", 1)}},
+       {Item(Item::token, "foo"), {Param("a105", 1)}},
+       {Item(Item::token, "foo"), {Param("a106", 1)}},
+       {Item(Item::token, "foo"), {Param("a107", 1)}},
+       {Item(Item::token, "foo"), {Param("a108", 1)}},
+       {Item(Item::token, "foo"), {Param("a109", 1)}},
+       {Item(Item::token, "foo"), {Param("a110", 1)}},
+       {Item(Item::token, "foo"), {Param("a111", 1)}},
+       {Item(Item::token, "foo"), {Param("a112", 1)}},
+       {Item(Item::token, "foo"), {Param("a113", 1)}},
+       {Item(Item::token, "foo"), {Param("a114", 1)}},
+       {Item(Item::token, "foo"), {Param("a115", 1)}},
+       {Item(Item::token, "foo"), {Param("a116", 1)}},
+       {Item(Item::token, "foo"), {Param("a117", 1)}},
+       {Item(Item::token, "foo"), {Param("a118", 1)}},
+       {Item(Item::token, "foo"), {Param("a119", 1)}},
+       {Item(Item::token, "foo"), {Param("a120", 1)}},
+       {Item(Item::token, "foo"), {Param("a121", 1)}},
+       {Item(Item::token, "foo"), {Param("a122", 1)}},
+       {Item(Item::token, "foo"), {Param("a123", 1)}},
+       {Item(Item::token, "foo"), {Param("a124", 1)}},
+       {Item(Item::token, "foo"), {Param("a125", 1)}},
+       {Item(Item::token, "foo"), {Param("a126", 1)}},
+       {Item(Item::token, "foo"), {Param("a127", 1)}},
+       {Item(Item::token, "foo"), {Param("a128", 1)}},
+       {Item(Item::token, "foo"), {Param("a129", 1)}},
+       {Item(Item::token, "foo"), {Param("a130", 1)}},
+       {Item(Item::token, "foo"), {Param("a131", 1)}},
+       {Item(Item::token, "foo"), {Param("a132", 1)}},
+       {Item(Item::token, "foo"), {Param("a133", 1)}},
+       {Item(Item::token, "foo"), {Param("a134", 1)}},
+       {Item(Item::token, "foo"), {Param("a135", 1)}},
+       {Item(Item::token, "foo"), {Param("a136", 1)}},
+       {Item(Item::token, "foo"), {Param("a137", 1)}},
+       {Item(Item::token, "foo"), {Param("a138", 1)}},
+       {Item(Item::token, "foo"), {Param("a139", 1)}},
+       {Item(Item::token, "foo"), {Param("a140", 1)}},
+       {Item(Item::token, "foo"), {Param("a141", 1)}},
+       {Item(Item::token, "foo"), {Param("a142", 1)}},
+       {Item(Item::token, "foo"), {Param("a143", 1)}},
+       {Item(Item::token, "foo"), {Param("a144", 1)}},
+       {Item(Item::token, "foo"), {Param("a145", 1)}},
+       {Item(Item::token, "foo"), {Param("a146", 1)}},
+       {Item(Item::token, "foo"), {Param("a147", 1)}},
+       {Item(Item::token, "foo"), {Param("a148", 1)}},
+       {Item(Item::token, "foo"), {Param("a149", 1)}},
+       {Item(Item::token, "foo"), {Param("a150", 1)}},
+       {Item(Item::token, "foo"), {Param("a151", 1)}},
+       {Item(Item::token, "foo"), {Param("a152", 1)}},
+       {Item(Item::token, "foo"), {Param("a153", 1)}},
+       {Item(Item::token, "foo"), {Param("a154", 1)}},
+       {Item(Item::token, "foo"), {Param("a155", 1)}},
+       {Item(Item::token, "foo"), {Param("a156", 1)}},
+       {Item(Item::token, "foo"), {Param("a157", 1)}},
+       {Item(Item::token, "foo"), {Param("a158", 1)}},
+       {Item(Item::token, "foo"), {Param("a159", 1)}},
+       {Item(Item::token, "foo"), {Param("a160", 1)}},
+       {Item(Item::token, "foo"), {Param("a161", 1)}},
+       {Item(Item::token, "foo"), {Param("a162", 1)}},
+       {Item(Item::token, "foo"), {Param("a163", 1)}},
+       {Item(Item::token, "foo"), {Param("a164", 1)}},
+       {Item(Item::token, "foo"), {Param("a165", 1)}},
+       {Item(Item::token, "foo"), {Param("a166", 1)}},
+       {Item(Item::token, "foo"), {Param("a167", 1)}},
+       {Item(Item::token, "foo"), {Param("a168", 1)}},
+       {Item(Item::token, "foo"), {Param("a169", 1)}},
+       {Item(Item::token, "foo"), {Param("a170", 1)}},
+       {Item(Item::token, "foo"), {Param("a171", 1)}},
+       {Item(Item::token, "foo"), {Param("a172", 1)}},
+       {Item(Item::token, "foo"), {Param("a173", 1)}},
+       {Item(Item::token, "foo"), {Param("a174", 1)}},
+       {Item(Item::token, "foo"), {Param("a175", 1)}},
+       {Item(Item::token, "foo"), {Param("a176", 1)}},
+       {Item(Item::token, "foo"), {Param("a177", 1)}},
+       {Item(Item::token, "foo"), {Param("a178", 1)}},
+       {Item(Item::token, "foo"), {Param("a179", 1)}},
+       {Item(Item::token, "foo"), {Param("a180", 1)}},
+       {Item(Item::token, "foo"), {Param("a181", 1)}},
+       {Item(Item::token, "foo"), {Param("a182", 1)}},
+       {Item(Item::token, "foo"), {Param("a183", 1)}},
+       {Item(Item::token, "foo"), {Param("a184", 1)}},
+       {Item(Item::token, "foo"), {Param("a185", 1)}},
+       {Item(Item::token, "foo"), {Param("a186", 1)}},
+       {Item(Item::token, "foo"), {Param("a187", 1)}},
+       {Item(Item::token, "foo"), {Param("a188", 1)}},
+       {Item(Item::token, "foo"), {Param("a189", 1)}},
+       {Item(Item::token, "foo"), {Param("a190", 1)}},
+       {Item(Item::token, "foo"), {Param("a191", 1)}},
+       {Item(Item::token, "foo"), {Param("a192", 1)}},
+       {Item(Item::token, "foo"), {Param("a193", 1)}},
+       {Item(Item::token, "foo"), {Param("a194", 1)}},
+       {Item(Item::token, "foo"), {Param("a195", 1)}},
+       {Item(Item::token, "foo"), {Param("a196", 1)}},
+       {Item(Item::token, "foo"), {Param("a197", 1)}},
+       {Item(Item::token, "foo"), {Param("a198", 1)}},
+       {Item(Item::token, "foo"), {Param("a199", 1)}},
+       {Item(Item::token, "foo"), {Param("a200", 1)}},
+       {Item(Item::token, "foo"), {Param("a201", 1)}},
+       {Item(Item::token, "foo"), {Param("a202", 1)}},
+       {Item(Item::token, "foo"), {Param("a203", 1)}},
+       {Item(Item::token, "foo"), {Param("a204", 1)}},
+       {Item(Item::token, "foo"), {Param("a205", 1)}},
+       {Item(Item::token, "foo"), {Param("a206", 1)}},
+       {Item(Item::token, "foo"), {Param("a207", 1)}},
+       {Item(Item::token, "foo"), {Param("a208", 1)}},
+       {Item(Item::token, "foo"), {Param("a209", 1)}},
+       {Item(Item::token, "foo"), {Param("a210", 1)}},
+       {Item(Item::token, "foo"), {Param("a211", 1)}},
+       {Item(Item::token, "foo"), {Param("a212", 1)}},
+       {Item(Item::token, "foo"), {Param("a213", 1)}},
+       {Item(Item::token, "foo"), {Param("a214", 1)}},
+       {Item(Item::token, "foo"), {Param("a215", 1)}},
+       {Item(Item::token, "foo"), {Param("a216", 1)}},
+       {Item(Item::token, "foo"), {Param("a217", 1)}},
+       {Item(Item::token, "foo"), {Param("a218", 1)}},
+       {Item(Item::token, "foo"), {Param("a219", 1)}},
+       {Item(Item::token, "foo"), {Param("a220", 1)}},
+       {Item(Item::token, "foo"), {Param("a221", 1)}},
+       {Item(Item::token, "foo"), {Param("a222", 1)}},
+       {Item(Item::token, "foo"), {Param("a223", 1)}},
+       {Item(Item::token, "foo"), {Param("a224", 1)}},
+       {Item(Item::token, "foo"), {Param("a225", 1)}},
+       {Item(Item::token, "foo"), {Param("a226", 1)}},
+       {Item(Item::token, "foo"), {Param("a227", 1)}},
+       {Item(Item::token, "foo"), {Param("a228", 1)}},
+       {Item(Item::token, "foo"), {Param("a229", 1)}},
+       {Item(Item::token, "foo"), {Param("a230", 1)}},
+       {Item(Item::token, "foo"), {Param("a231", 1)}},
+       {Item(Item::token, "foo"), {Param("a232", 1)}},
+       {Item(Item::token, "foo"), {Param("a233", 1)}},
+       {Item(Item::token, "foo"), {Param("a234", 1)}},
+       {Item(Item::token, "foo"), {Param("a235", 1)}},
+       {Item(Item::token, "foo"), {Param("a236", 1)}},
+       {Item(Item::token, "foo"), {Param("a237", 1)}},
+       {Item(Item::token, "foo"), {Param("a238", 1)}},
+       {Item(Item::token, "foo"), {Param("a239", 1)}},
+       {Item(Item::token, "foo"), {Param("a240", 1)}},
+       {Item(Item::token, "foo"), {Param("a241", 1)}},
+       {Item(Item::token, "foo"), {Param("a242", 1)}},
+       {Item(Item::token, "foo"), {Param("a243", 1)}},
+       {Item(Item::token, "foo"), {Param("a244", 1)}},
+       {Item(Item::token, "foo"), {Param("a245", 1)}},
+       {Item(Item::token, "foo"), {Param("a246", 1)}},
+       {Item(Item::token, "foo"), {Param("a247", 1)}},
+       {Item(Item::token, "foo"), {Param("a248", 1)}},
+       {Item(Item::token, "foo"), {Param("a249", 1)}},
+       {Item(Item::token, "foo"), {Param("a250", 1)}},
+       {Item(Item::token, "foo"), {Param("a251", 1)}},
+       {Item(Item::token, "foo"), {Param("a252", 1)}},
+       {Item(Item::token, "foo"), {Param("a253", 1)}},
+       {Item(Item::token, "foo"), {Param("a254", 1)}},
+       {Item(Item::token, "foo"), {Param("a255", 1)}},
+       {Item(Item::token, "foo"), {Param("a256", 1)}},
+       {Item(Item::token, "foo"), {Param("a257", 1)}},
+       {Item(Item::token, "foo"), {Param("a258", 1)}},
+       {Item(Item::token, "foo"), {Param("a259", 1)}},
+       {Item(Item::token, "foo"), {Param("a260", 1)}},
+       {Item(Item::token, "foo"), {Param("a261", 1)}},
+       {Item(Item::token, "foo"), {Param("a262", 1)}},
+       {Item(Item::token, "foo"), {Param("a263", 1)}},
+       {Item(Item::token, "foo"), {Param("a264", 1)}},
+       {Item(Item::token, "foo"), {Param("a265", 1)}},
+       {Item(Item::token, "foo"), {Param("a266", 1)}},
+       {Item(Item::token, "foo"), {Param("a267", 1)}},
+       {Item(Item::token, "foo"), {Param("a268", 1)}},
+       {Item(Item::token, "foo"), {Param("a269", 1)}},
+       {Item(Item::token, "foo"), {Param("a270", 1)}},
+       {Item(Item::token, "foo"), {Param("a271", 1)}},
+       {Item(Item::token, "foo"), {Param("a272", 1)}},
+       {Item(Item::token, "foo"), {Param("a273", 1)}},
+       {Item(Item::token, "foo"), {Param("a274", 1)}},
+       {Item(Item::token, "foo"), {Param("a275", 1)}},
+       {Item(Item::token, "foo"), {Param("a276", 1)}},
+       {Item(Item::token, "foo"), {Param("a277", 1)}},
+       {Item(Item::token, "foo"), {Param("a278", 1)}},
+       {Item(Item::token, "foo"), {Param("a279", 1)}},
+       {Item(Item::token, "foo"), {Param("a280", 1)}},
+       {Item(Item::token, "foo"), {Param("a281", 1)}},
+       {Item(Item::token, "foo"), {Param("a282", 1)}},
+       {Item(Item::token, "foo"), {Param("a283", 1)}},
+       {Item(Item::token, "foo"), {Param("a284", 1)}},
+       {Item(Item::token, "foo"), {Param("a285", 1)}},
+       {Item(Item::token, "foo"), {Param("a286", 1)}},
+       {Item(Item::token, "foo"), {Param("a287", 1)}},
+       {Item(Item::token, "foo"), {Param("a288", 1)}},
+       {Item(Item::token, "foo"), {Param("a289", 1)}},
+       {Item(Item::token, "foo"), {Param("a290", 1)}},
+       {Item(Item::token, "foo"), {Param("a291", 1)}},
+       {Item(Item::token, "foo"), {Param("a292", 1)}},
+       {Item(Item::token, "foo"), {Param("a293", 1)}},
+       {Item(Item::token, "foo"), {Param("a294", 1)}},
+       {Item(Item::token, "foo"), {Param("a295", 1)}},
+       {Item(Item::token, "foo"), {Param("a296", 1)}},
+       {Item(Item::token, "foo"), {Param("a297", 1)}},
+       {Item(Item::token, "foo"), {Param("a298", 1)}},
+       {Item(Item::token, "foo"), {Param("a299", 1)}},
+       {Item(Item::token, "foo"), {Param("a300", 1)}},
+       {Item(Item::token, "foo"), {Param("a301", 1)}},
+       {Item(Item::token, "foo"), {Param("a302", 1)}},
+       {Item(Item::token, "foo"), {Param("a303", 1)}},
+       {Item(Item::token, "foo"), {Param("a304", 1)}},
+       {Item(Item::token, "foo"), {Param("a305", 1)}},
+       {Item(Item::token, "foo"), {Param("a306", 1)}},
+       {Item(Item::token, "foo"), {Param("a307", 1)}},
+       {Item(Item::token, "foo"), {Param("a308", 1)}},
+       {Item(Item::token, "foo"), {Param("a309", 1)}},
+       {Item(Item::token, "foo"), {Param("a310", 1)}},
+       {Item(Item::token, "foo"), {Param("a311", 1)}},
+       {Item(Item::token, "foo"), {Param("a312", 1)}},
+       {Item(Item::token, "foo"), {Param("a313", 1)}},
+       {Item(Item::token, "foo"), {Param("a314", 1)}},
+       {Item(Item::token, "foo"), {Param("a315", 1)}},
+       {Item(Item::token, "foo"), {Param("a316", 1)}},
+       {Item(Item::token, "foo"), {Param("a317", 1)}},
+       {Item(Item::token, "foo"), {Param("a318", 1)}},
+       {Item(Item::token, "foo"), {Param("a319", 1)}},
+       {Item(Item::token, "foo"), {Param("a320", 1)}},
+       {Item(Item::token, "foo"), {Param("a321", 1)}},
+       {Item(Item::token, "foo"), {Param("a322", 1)}},
+       {Item(Item::token, "foo"), {Param("a323", 1)}},
+       {Item(Item::token, "foo"), {Param("a324", 1)}},
+       {Item(Item::token, "foo"), {Param("a325", 1)}},
+       {Item(Item::token, "foo"), {Param("a326", 1)}},
+       {Item(Item::token, "foo"), {Param("a327", 1)}},
+       {Item(Item::token, "foo"), {Param("a328", 1)}},
+       {Item(Item::token, "foo"), {Param("a329", 1)}},
+       {Item(Item::token, "foo"), {Param("a330", 1)}},
+       {Item(Item::token, "foo"), {Param("a331", 1)}},
+       {Item(Item::token, "foo"), {Param("a332", 1)}},
+       {Item(Item::token, "foo"), {Param("a333", 1)}},
+       {Item(Item::token, "foo"), {Param("a334", 1)}},
+       {Item(Item::token, "foo"), {Param("a335", 1)}},
+       {Item(Item::token, "foo"), {Param("a336", 1)}},
+       {Item(Item::token, "foo"), {Param("a337", 1)}},
+       {Item(Item::token, "foo"), {Param("a338", 1)}},
+       {Item(Item::token, "foo"), {Param("a339", 1)}},
+       {Item(Item::token, "foo"), {Param("a340", 1)}},
+       {Item(Item::token, "foo"), {Param("a341", 1)}},
+       {Item(Item::token, "foo"), {Param("a342", 1)}},
+       {Item(Item::token, "foo"), {Param("a343", 1)}},
+       {Item(Item::token, "foo"), {Param("a344", 1)}},
+       {Item(Item::token, "foo"), {Param("a345", 1)}},
+       {Item(Item::token, "foo"), {Param("a346", 1)}},
+       {Item(Item::token, "foo"), {Param("a347", 1)}},
+       {Item(Item::token, "foo"), {Param("a348", 1)}},
+       {Item(Item::token, "foo"), {Param("a349", 1)}},
+       {Item(Item::token, "foo"), {Param("a350", 1)}},
+       {Item(Item::token, "foo"), {Param("a351", 1)}},
+       {Item(Item::token, "foo"), {Param("a352", 1)}},
+       {Item(Item::token, "foo"), {Param("a353", 1)}},
+       {Item(Item::token, "foo"), {Param("a354", 1)}},
+       {Item(Item::token, "foo"), {Param("a355", 1)}},
+       {Item(Item::token, "foo"), {Param("a356", 1)}},
+       {Item(Item::token, "foo"), {Param("a357", 1)}},
+       {Item(Item::token, "foo"), {Param("a358", 1)}},
+       {Item(Item::token, "foo"), {Param("a359", 1)}},
+       {Item(Item::token, "foo"), {Param("a360", 1)}},
+       {Item(Item::token, "foo"), {Param("a361", 1)}},
+       {Item(Item::token, "foo"), {Param("a362", 1)}},
+       {Item(Item::token, "foo"), {Param("a363", 1)}},
+       {Item(Item::token, "foo"), {Param("a364", 1)}},
+       {Item(Item::token, "foo"), {Param("a365", 1)}},
+       {Item(Item::token, "foo"), {Param("a366", 1)}},
+       {Item(Item::token, "foo"), {Param("a367", 1)}},
+       {Item(Item::token, "foo"), {Param("a368", 1)}},
+       {Item(Item::token, "foo"), {Param("a369", 1)}},
+       {Item(Item::token, "foo"), {Param("a370", 1)}},
+       {Item(Item::token, "foo"), {Param("a371", 1)}},
+       {Item(Item::token, "foo"), {Param("a372", 1)}},
+       {Item(Item::token, "foo"), {Param("a373", 1)}},
+       {Item(Item::token, "foo"), {Param("a374", 1)}},
+       {Item(Item::token, "foo"), {Param("a375", 1)}},
+       {Item(Item::token, "foo"), {Param("a376", 1)}},
+       {Item(Item::token, "foo"), {Param("a377", 1)}},
+       {Item(Item::token, "foo"), {Param("a378", 1)}},
+       {Item(Item::token, "foo"), {Param("a379", 1)}},
+       {Item(Item::token, "foo"), {Param("a380", 1)}},
+       {Item(Item::token, "foo"), {Param("a381", 1)}},
+       {Item(Item::token, "foo"), {Param("a382", 1)}},
+       {Item(Item::token, "foo"), {Param("a383", 1)}},
+       {Item(Item::token, "foo"), {Param("a384", 1)}},
+       {Item(Item::token, "foo"), {Param("a385", 1)}},
+       {Item(Item::token, "foo"), {Param("a386", 1)}},
+       {Item(Item::token, "foo"), {Param("a387", 1)}},
+       {Item(Item::token, "foo"), {Param("a388", 1)}},
+       {Item(Item::token, "foo"), {Param("a389", 1)}},
+       {Item(Item::token, "foo"), {Param("a390", 1)}},
+       {Item(Item::token, "foo"), {Param("a391", 1)}},
+       {Item(Item::token, "foo"), {Param("a392", 1)}},
+       {Item(Item::token, "foo"), {Param("a393", 1)}},
+       {Item(Item::token, "foo"), {Param("a394", 1)}},
+       {Item(Item::token, "foo"), {Param("a395", 1)}},
+       {Item(Item::token, "foo"), {Param("a396", 1)}},
+       {Item(Item::token, "foo"), {Param("a397", 1)}},
+       {Item(Item::token, "foo"), {Param("a398", 1)}},
+       {Item(Item::token, "foo"), {Param("a399", 1)}},
+       {Item(Item::token, "foo"), {Param("a400", 1)}},
+       {Item(Item::token, "foo"), {Param("a401", 1)}},
+       {Item(Item::token, "foo"), {Param("a402", 1)}},
+       {Item(Item::token, "foo"), {Param("a403", 1)}},
+       {Item(Item::token, "foo"), {Param("a404", 1)}},
+       {Item(Item::token, "foo"), {Param("a405", 1)}},
+       {Item(Item::token, "foo"), {Param("a406", 1)}},
+       {Item(Item::token, "foo"), {Param("a407", 1)}},
+       {Item(Item::token, "foo"), {Param("a408", 1)}},
+       {Item(Item::token, "foo"), {Param("a409", 1)}},
+       {Item(Item::token, "foo"), {Param("a410", 1)}},
+       {Item(Item::token, "foo"), {Param("a411", 1)}},
+       {Item(Item::token, "foo"), {Param("a412", 1)}},
+       {Item(Item::token, "foo"), {Param("a413", 1)}},
+       {Item(Item::token, "foo"), {Param("a414", 1)}},
+       {Item(Item::token, "foo"), {Param("a415", 1)}},
+       {Item(Item::token, "foo"), {Param("a416", 1)}},
+       {Item(Item::token, "foo"), {Param("a417", 1)}},
+       {Item(Item::token, "foo"), {Param("a418", 1)}},
+       {Item(Item::token, "foo"), {Param("a419", 1)}},
+       {Item(Item::token, "foo"), {Param("a420", 1)}},
+       {Item(Item::token, "foo"), {Param("a421", 1)}},
+       {Item(Item::token, "foo"), {Param("a422", 1)}},
+       {Item(Item::token, "foo"), {Param("a423", 1)}},
+       {Item(Item::token, "foo"), {Param("a424", 1)}},
+       {Item(Item::token, "foo"), {Param("a425", 1)}},
+       {Item(Item::token, "foo"), {Param("a426", 1)}},
+       {Item(Item::token, "foo"), {Param("a427", 1)}},
+       {Item(Item::token, "foo"), {Param("a428", 1)}},
+       {Item(Item::token, "foo"), {Param("a429", 1)}},
+       {Item(Item::token, "foo"), {Param("a430", 1)}},
+       {Item(Item::token, "foo"), {Param("a431", 1)}},
+       {Item(Item::token, "foo"), {Param("a432", 1)}},
+       {Item(Item::token, "foo"), {Param("a433", 1)}},
+       {Item(Item::token, "foo"), {Param("a434", 1)}},
+       {Item(Item::token, "foo"), {Param("a435", 1)}},
+       {Item(Item::token, "foo"), {Param("a436", 1)}},
+       {Item(Item::token, "foo"), {Param("a437", 1)}},
+       {Item(Item::token, "foo"), {Param("a438", 1)}},
+       {Item(Item::token, "foo"), {Param("a439", 1)}},
+       {Item(Item::token, "foo"), {Param("a440", 1)}},
+       {Item(Item::token, "foo"), {Param("a441", 1)}},
+       {Item(Item::token, "foo"), {Param("a442", 1)}},
+       {Item(Item::token, "foo"), {Param("a443", 1)}},
+       {Item(Item::token, "foo"), {Param("a444", 1)}},
+       {Item(Item::token, "foo"), {Param("a445", 1)}},
+       {Item(Item::token, "foo"), {Param("a446", 1)}},
+       {Item(Item::token, "foo"), {Param("a447", 1)}},
+       {Item(Item::token, "foo"), {Param("a448", 1)}},
+       {Item(Item::token, "foo"), {Param("a449", 1)}},
+       {Item(Item::token, "foo"), {Param("a450", 1)}},
+       {Item(Item::token, "foo"), {Param("a451", 1)}},
+       {Item(Item::token, "foo"), {Param("a452", 1)}},
+       {Item(Item::token, "foo"), {Param("a453", 1)}},
+       {Item(Item::token, "foo"), {Param("a454", 1)}},
+       {Item(Item::token, "foo"), {Param("a455", 1)}},
+       {Item(Item::token, "foo"), {Param("a456", 1)}},
+       {Item(Item::token, "foo"), {Param("a457", 1)}},
+       {Item(Item::token, "foo"), {Param("a458", 1)}},
+       {Item(Item::token, "foo"), {Param("a459", 1)}},
+       {Item(Item::token, "foo"), {Param("a460", 1)}},
+       {Item(Item::token, "foo"), {Param("a461", 1)}},
+       {Item(Item::token, "foo"), {Param("a462", 1)}},
+       {Item(Item::token, "foo"), {Param("a463", 1)}},
+       {Item(Item::token, "foo"), {Param("a464", 1)}},
+       {Item(Item::token, "foo"), {Param("a465", 1)}},
+       {Item(Item::token, "foo"), {Param("a466", 1)}},
+       {Item(Item::token, "foo"), {Param("a467", 1)}},
+       {Item(Item::token, "foo"), {Param("a468", 1)}},
+       {Item(Item::token, "foo"), {Param("a469", 1)}},
+       {Item(Item::token, "foo"), {Param("a470", 1)}},
+       {Item(Item::token, "foo"), {Param("a471", 1)}},
+       {Item(Item::token, "foo"), {Param("a472", 1)}},
+       {Item(Item::token, "foo"), {Param("a473", 1)}},
+       {Item(Item::token, "foo"), {Param("a474", 1)}},
+       {Item(Item::token, "foo"), {Param("a475", 1)}},
+       {Item(Item::token, "foo"), {Param("a476", 1)}},
+       {Item(Item::token, "foo"), {Param("a477", 1)}},
+       {Item(Item::token, "foo"), {Param("a478", 1)}},
+       {Item(Item::token, "foo"), {Param("a479", 1)}},
+       {Item(Item::token, "foo"), {Param("a480", 1)}},
+       {Item(Item::token, "foo"), {Param("a481", 1)}},
+       {Item(Item::token, "foo"), {Param("a482", 1)}},
+       {Item(Item::token, "foo"), {Param("a483", 1)}},
+       {Item(Item::token, "foo"), {Param("a484", 1)}},
+       {Item(Item::token, "foo"), {Param("a485", 1)}},
+       {Item(Item::token, "foo"), {Param("a486", 1)}},
+       {Item(Item::token, "foo"), {Param("a487", 1)}},
+       {Item(Item::token, "foo"), {Param("a488", 1)}},
+       {Item(Item::token, "foo"), {Param("a489", 1)}},
+       {Item(Item::token, "foo"), {Param("a490", 1)}},
+       {Item(Item::token, "foo"), {Param("a491", 1)}},
+       {Item(Item::token, "foo"), {Param("a492", 1)}},
+       {Item(Item::token, "foo"), {Param("a493", 1)}},
+       {Item(Item::token, "foo"), {Param("a494", 1)}},
+       {Item(Item::token, "foo"), {Param("a495", 1)}},
+       {Item(Item::token, "foo"), {Param("a496", 1)}},
+       {Item(Item::token, "foo"), {Param("a497", 1)}},
+       {Item(Item::token, "foo"), {Param("a498", 1)}},
+       {Item(Item::token, "foo"), {Param("a499", 1)}},
+       {Item(Item::token, "foo"), {Param("a500", 1)}},
+       {Item(Item::token, "foo"), {Param("a501", 1)}},
+       {Item(Item::token, "foo"), {Param("a502", 1)}},
+       {Item(Item::token, "foo"), {Param("a503", 1)}},
+       {Item(Item::token, "foo"), {Param("a504", 1)}},
+       {Item(Item::token, "foo"), {Param("a505", 1)}},
+       {Item(Item::token, "foo"), {Param("a506", 1)}},
+       {Item(Item::token, "foo"), {Param("a507", 1)}},
+       {Item(Item::token, "foo"), {Param("a508", 1)}},
+       {Item(Item::token, "foo"), {Param("a509", 1)}},
+       {Item(Item::token, "foo"), {Param("a510", 1)}},
+       {Item(Item::token, "foo"), {Param("a511", 1)}},
+       {Item(Item::token, "foo"), {Param("a512", 1)}},
+       {Item(Item::token, "foo"), {Param("a513", 1)}},
+       {Item(Item::token, "foo"), {Param("a514", 1)}},
+       {Item(Item::token, "foo"), {Param("a515", 1)}},
+       {Item(Item::token, "foo"), {Param("a516", 1)}},
+       {Item(Item::token, "foo"), {Param("a517", 1)}},
+       {Item(Item::token, "foo"), {Param("a518", 1)}},
+       {Item(Item::token, "foo"), {Param("a519", 1)}},
+       {Item(Item::token, "foo"), {Param("a520", 1)}},
+       {Item(Item::token, "foo"), {Param("a521", 1)}},
+       {Item(Item::token, "foo"), {Param("a522", 1)}},
+       {Item(Item::token, "foo"), {Param("a523", 1)}},
+       {Item(Item::token, "foo"), {Param("a524", 1)}},
+       {Item(Item::token, "foo"), {Param("a525", 1)}},
+       {Item(Item::token, "foo"), {Param("a526", 1)}},
+       {Item(Item::token, "foo"), {Param("a527", 1)}},
+       {Item(Item::token, "foo"), {Param("a528", 1)}},
+       {Item(Item::token, "foo"), {Param("a529", 1)}},
+       {Item(Item::token, "foo"), {Param("a530", 1)}},
+       {Item(Item::token, "foo"), {Param("a531", 1)}},
+       {Item(Item::token, "foo"), {Param("a532", 1)}},
+       {Item(Item::token, "foo"), {Param("a533", 1)}},
+       {Item(Item::token, "foo"), {Param("a534", 1)}},
+       {Item(Item::token, "foo"), {Param("a535", 1)}},
+       {Item(Item::token, "foo"), {Param("a536", 1)}},
+       {Item(Item::token, "foo"), {Param("a537", 1)}},
+       {Item(Item::token, "foo"), {Param("a538", 1)}},
+       {Item(Item::token, "foo"), {Param("a539", 1)}},
+       {Item(Item::token, "foo"), {Param("a540", 1)}},
+       {Item(Item::token, "foo"), {Param("a541", 1)}},
+       {Item(Item::token, "foo"), {Param("a542", 1)}},
+       {Item(Item::token, "foo"), {Param("a543", 1)}},
+       {Item(Item::token, "foo"), {Param("a544", 1)}},
+       {Item(Item::token, "foo"), {Param("a545", 1)}},
+       {Item(Item::token, "foo"), {Param("a546", 1)}},
+       {Item(Item::token, "foo"), {Param("a547", 1)}},
+       {Item(Item::token, "foo"), {Param("a548", 1)}},
+       {Item(Item::token, "foo"), {Param("a549", 1)}},
+       {Item(Item::token, "foo"), {Param("a550", 1)}},
+       {Item(Item::token, "foo"), {Param("a551", 1)}},
+       {Item(Item::token, "foo"), {Param("a552", 1)}},
+       {Item(Item::token, "foo"), {Param("a553", 1)}},
+       {Item(Item::token, "foo"), {Param("a554", 1)}},
+       {Item(Item::token, "foo"), {Param("a555", 1)}},
+       {Item(Item::token, "foo"), {Param("a556", 1)}},
+       {Item(Item::token, "foo"), {Param("a557", 1)}},
+       {Item(Item::token, "foo"), {Param("a558", 1)}},
+       {Item(Item::token, "foo"), {Param("a559", 1)}},
+       {Item(Item::token, "foo"), {Param("a560", 1)}},
+       {Item(Item::token, "foo"), {Param("a561", 1)}},
+       {Item(Item::token, "foo"), {Param("a562", 1)}},
+       {Item(Item::token, "foo"), {Param("a563", 1)}},
+       {Item(Item::token, "foo"), {Param("a564", 1)}},
+       {Item(Item::token, "foo"), {Param("a565", 1)}},
+       {Item(Item::token, "foo"), {Param("a566", 1)}},
+       {Item(Item::token, "foo"), {Param("a567", 1)}},
+       {Item(Item::token, "foo"), {Param("a568", 1)}},
+       {Item(Item::token, "foo"), {Param("a569", 1)}},
+       {Item(Item::token, "foo"), {Param("a570", 1)}},
+       {Item(Item::token, "foo"), {Param("a571", 1)}},
+       {Item(Item::token, "foo"), {Param("a572", 1)}},
+       {Item(Item::token, "foo"), {Param("a573", 1)}},
+       {Item(Item::token, "foo"), {Param("a574", 1)}},
+       {Item(Item::token, "foo"), {Param("a575", 1)}},
+       {Item(Item::token, "foo"), {Param("a576", 1)}},
+       {Item(Item::token, "foo"), {Param("a577", 1)}},
+       {Item(Item::token, "foo"), {Param("a578", 1)}},
+       {Item(Item::token, "foo"), {Param("a579", 1)}},
+       {Item(Item::token, "foo"), {Param("a580", 1)}},
+       {Item(Item::token, "foo"), {Param("a581", 1)}},
+       {Item(Item::token, "foo"), {Param("a582", 1)}},
+       {Item(Item::token, "foo"), {Param("a583", 1)}},
+       {Item(Item::token, "foo"), {Param("a584", 1)}},
+       {Item(Item::token, "foo"), {Param("a585", 1)}},
+       {Item(Item::token, "foo"), {Param("a586", 1)}},
+       {Item(Item::token, "foo"), {Param("a587", 1)}},
+       {Item(Item::token, "foo"), {Param("a588", 1)}},
+       {Item(Item::token, "foo"), {Param("a589", 1)}},
+       {Item(Item::token, "foo"), {Param("a590", 1)}},
+       {Item(Item::token, "foo"), {Param("a591", 1)}},
+       {Item(Item::token, "foo"), {Param("a592", 1)}},
+       {Item(Item::token, "foo"), {Param("a593", 1)}},
+       {Item(Item::token, "foo"), {Param("a594", 1)}},
+       {Item(Item::token, "foo"), {Param("a595", 1)}},
+       {Item(Item::token, "foo"), {Param("a596", 1)}},
+       {Item(Item::token, "foo"), {Param("a597", 1)}},
+       {Item(Item::token, "foo"), {Param("a598", 1)}},
+       {Item(Item::token, "foo"), {Param("a599", 1)}},
+       {Item(Item::token, "foo"), {Param("a600", 1)}},
+       {Item(Item::token, "foo"), {Param("a601", 1)}},
+       {Item(Item::token, "foo"), {Param("a602", 1)}},
+       {Item(Item::token, "foo"), {Param("a603", 1)}},
+       {Item(Item::token, "foo"), {Param("a604", 1)}},
+       {Item(Item::token, "foo"), {Param("a605", 1)}},
+       {Item(Item::token, "foo"), {Param("a606", 1)}},
+       {Item(Item::token, "foo"), {Param("a607", 1)}},
+       {Item(Item::token, "foo"), {Param("a608", 1)}},
+       {Item(Item::token, "foo"), {Param("a609", 1)}},
+       {Item(Item::token, "foo"), {Param("a610", 1)}},
+       {Item(Item::token, "foo"), {Param("a611", 1)}},
+       {Item(Item::token, "foo"), {Param("a612", 1)}},
+       {Item(Item::token, "foo"), {Param("a613", 1)}},
+       {Item(Item::token, "foo"), {Param("a614", 1)}},
+       {Item(Item::token, "foo"), {Param("a615", 1)}},
+       {Item(Item::token, "foo"), {Param("a616", 1)}},
+       {Item(Item::token, "foo"), {Param("a617", 1)}},
+       {Item(Item::token, "foo"), {Param("a618", 1)}},
+       {Item(Item::token, "foo"), {Param("a619", 1)}},
+       {Item(Item::token, "foo"), {Param("a620", 1)}},
+       {Item(Item::token, "foo"), {Param("a621", 1)}},
+       {Item(Item::token, "foo"), {Param("a622", 1)}},
+       {Item(Item::token, "foo"), {Param("a623", 1)}},
+       {Item(Item::token, "foo"), {Param("a624", 1)}},
+       {Item(Item::token, "foo"), {Param("a625", 1)}},
+       {Item(Item::token, "foo"), {Param("a626", 1)}},
+       {Item(Item::token, "foo"), {Param("a627", 1)}},
+       {Item(Item::token, "foo"), {Param("a628", 1)}},
+       {Item(Item::token, "foo"), {Param("a629", 1)}},
+       {Item(Item::token, "foo"), {Param("a630", 1)}},
+       {Item(Item::token, "foo"), {Param("a631", 1)}},
+       {Item(Item::token, "foo"), {Param("a632", 1)}},
+       {Item(Item::token, "foo"), {Param("a633", 1)}},
+       {Item(Item::token, "foo"), {Param("a634", 1)}},
+       {Item(Item::token, "foo"), {Param("a635", 1)}},
+       {Item(Item::token, "foo"), {Param("a636", 1)}},
+       {Item(Item::token, "foo"), {Param("a637", 1)}},
+       {Item(Item::token, "foo"), {Param("a638", 1)}},
+       {Item(Item::token, "foo"), {Param("a639", 1)}},
+       {Item(Item::token, "foo"), {Param("a640", 1)}},
+       {Item(Item::token, "foo"), {Param("a641", 1)}},
+       {Item(Item::token, "foo"), {Param("a642", 1)}},
+       {Item(Item::token, "foo"), {Param("a643", 1)}},
+       {Item(Item::token, "foo"), {Param("a644", 1)}},
+       {Item(Item::token, "foo"), {Param("a645", 1)}},
+       {Item(Item::token, "foo"), {Param("a646", 1)}},
+       {Item(Item::token, "foo"), {Param("a647", 1)}},
+       {Item(Item::token, "foo"), {Param("a648", 1)}},
+       {Item(Item::token, "foo"), {Param("a649", 1)}},
+       {Item(Item::token, "foo"), {Param("a650", 1)}},
+       {Item(Item::token, "foo"), {Param("a651", 1)}},
+       {Item(Item::token, "foo"), {Param("a652", 1)}},
+       {Item(Item::token, "foo"), {Param("a653", 1)}},
+       {Item(Item::token, "foo"), {Param("a654", 1)}},
+       {Item(Item::token, "foo"), {Param("a655", 1)}},
+       {Item(Item::token, "foo"), {Param("a656", 1)}},
+       {Item(Item::token, "foo"), {Param("a657", 1)}},
+       {Item(Item::token, "foo"), {Param("a658", 1)}},
+       {Item(Item::token, "foo"), {Param("a659", 1)}},
+       {Item(Item::token, "foo"), {Param("a660", 1)}},
+       {Item(Item::token, "foo"), {Param("a661", 1)}},
+       {Item(Item::token, "foo"), {Param("a662", 1)}},
+       {Item(Item::token, "foo"), {Param("a663", 1)}},
+       {Item(Item::token, "foo"), {Param("a664", 1)}},
+       {Item(Item::token, "foo"), {Param("a665", 1)}},
+       {Item(Item::token, "foo"), {Param("a666", 1)}},
+       {Item(Item::token, "foo"), {Param("a667", 1)}},
+       {Item(Item::token, "foo"), {Param("a668", 1)}},
+       {Item(Item::token, "foo"), {Param("a669", 1)}},
+       {Item(Item::token, "foo"), {Param("a670", 1)}},
+       {Item(Item::token, "foo"), {Param("a671", 1)}},
+       {Item(Item::token, "foo"), {Param("a672", 1)}},
+       {Item(Item::token, "foo"), {Param("a673", 1)}},
+       {Item(Item::token, "foo"), {Param("a674", 1)}},
+       {Item(Item::token, "foo"), {Param("a675", 1)}},
+       {Item(Item::token, "foo"), {Param("a676", 1)}},
+       {Item(Item::token, "foo"), {Param("a677", 1)}},
+       {Item(Item::token, "foo"), {Param("a678", 1)}},
+       {Item(Item::token, "foo"), {Param("a679", 1)}},
+       {Item(Item::token, "foo"), {Param("a680", 1)}},
+       {Item(Item::token, "foo"), {Param("a681", 1)}},
+       {Item(Item::token, "foo"), {Param("a682", 1)}},
+       {Item(Item::token, "foo"), {Param("a683", 1)}},
+       {Item(Item::token, "foo"), {Param("a684", 1)}},
+       {Item(Item::token, "foo"), {Param("a685", 1)}},
+       {Item(Item::token, "foo"), {Param("a686", 1)}},
+       {Item(Item::token, "foo"), {Param("a687", 1)}},
+       {Item(Item::token, "foo"), {Param("a688", 1)}},
+       {Item(Item::token, "foo"), {Param("a689", 1)}},
+       {Item(Item::token, "foo"), {Param("a690", 1)}},
+       {Item(Item::token, "foo"), {Param("a691", 1)}},
+       {Item(Item::token, "foo"), {Param("a692", 1)}},
+       {Item(Item::token, "foo"), {Param("a693", 1)}},
+       {Item(Item::token, "foo"), {Param("a694", 1)}},
+       {Item(Item::token, "foo"), {Param("a695", 1)}},
+       {Item(Item::token, "foo"), {Param("a696", 1)}},
+       {Item(Item::token, "foo"), {Param("a697", 1)}},
+       {Item(Item::token, "foo"), {Param("a698", 1)}},
+       {Item(Item::token, "foo"), {Param("a699", 1)}},
+       {Item(Item::token, "foo"), {Param("a700", 1)}},
+       {Item(Item::token, "foo"), {Param("a701", 1)}},
+       {Item(Item::token, "foo"), {Param("a702", 1)}},
+       {Item(Item::token, "foo"), {Param("a703", 1)}},
+       {Item(Item::token, "foo"), {Param("a704", 1)}},
+       {Item(Item::token, "foo"), {Param("a705", 1)}},
+       {Item(Item::token, "foo"), {Param("a706", 1)}},
+       {Item(Item::token, "foo"), {Param("a707", 1)}},
+       {Item(Item::token, "foo"), {Param("a708", 1)}},
+       {Item(Item::token, "foo"), {Param("a709", 1)}},
+       {Item(Item::token, "foo"), {Param("a710", 1)}},
+       {Item(Item::token, "foo"), {Param("a711", 1)}},
+       {Item(Item::token, "foo"), {Param("a712", 1)}},
+       {Item(Item::token, "foo"), {Param("a713", 1)}},
+       {Item(Item::token, "foo"), {Param("a714", 1)}},
+       {Item(Item::token, "foo"), {Param("a715", 1)}},
+       {Item(Item::token, "foo"), {Param("a716", 1)}},
+       {Item(Item::token, "foo"), {Param("a717", 1)}},
+       {Item(Item::token, "foo"), {Param("a718", 1)}},
+       {Item(Item::token, "foo"), {Param("a719", 1)}},
+       {Item(Item::token, "foo"), {Param("a720", 1)}},
+       {Item(Item::token, "foo"), {Param("a721", 1)}},
+       {Item(Item::token, "foo"), {Param("a722", 1)}},
+       {Item(Item::token, "foo"), {Param("a723", 1)}},
+       {Item(Item::token, "foo"), {Param("a724", 1)}},
+       {Item(Item::token, "foo"), {Param("a725", 1)}},
+       {Item(Item::token, "foo"), {Param("a726", 1)}},
+       {Item(Item::token, "foo"), {Param("a727", 1)}},
+       {Item(Item::token, "foo"), {Param("a728", 1)}},
+       {Item(Item::token, "foo"), {Param("a729", 1)}},
+       {Item(Item::token, "foo"), {Param("a730", 1)}},
+       {Item(Item::token, "foo"), {Param("a731", 1)}},
+       {Item(Item::token, "foo"), {Param("a732", 1)}},
+       {Item(Item::token, "foo"), {Param("a733", 1)}},
+       {Item(Item::token, "foo"), {Param("a734", 1)}},
+       {Item(Item::token, "foo"), {Param("a735", 1)}},
+       {Item(Item::token, "foo"), {Param("a736", 1)}},
+       {Item(Item::token, "foo"), {Param("a737", 1)}},
+       {Item(Item::token, "foo"), {Param("a738", 1)}},
+       {Item(Item::token, "foo"), {Param("a739", 1)}},
+       {Item(Item::token, "foo"), {Param("a740", 1)}},
+       {Item(Item::token, "foo"), {Param("a741", 1)}},
+       {Item(Item::token, "foo"), {Param("a742", 1)}},
+       {Item(Item::token, "foo"), {Param("a743", 1)}},
+       {Item(Item::token, "foo"), {Param("a744", 1)}},
+       {Item(Item::token, "foo"), {Param("a745", 1)}},
+       {Item(Item::token, "foo"), {Param("a746", 1)}},
+       {Item(Item::token, "foo"), {Param("a747", 1)}},
+       {Item(Item::token, "foo"), {Param("a748", 1)}},
+       {Item(Item::token, "foo"), {Param("a749", 1)}},
+       {Item(Item::token, "foo"), {Param("a750", 1)}},
+       {Item(Item::token, "foo"), {Param("a751", 1)}},
+       {Item(Item::token, "foo"), {Param("a752", 1)}},
+       {Item(Item::token, "foo"), {Param("a753", 1)}},
+       {Item(Item::token, "foo"), {Param("a754", 1)}},
+       {Item(Item::token, "foo"), {Param("a755", 1)}},
+       {Item(Item::token, "foo"), {Param("a756", 1)}},
+       {Item(Item::token, "foo"), {Param("a757", 1)}},
+       {Item(Item::token, "foo"), {Param("a758", 1)}},
+       {Item(Item::token, "foo"), {Param("a759", 1)}},
+       {Item(Item::token, "foo"), {Param("a760", 1)}},
+       {Item(Item::token, "foo"), {Param("a761", 1)}},
+       {Item(Item::token, "foo"), {Param("a762", 1)}},
+       {Item(Item::token, "foo"), {Param("a763", 1)}},
+       {Item(Item::token, "foo"), {Param("a764", 1)}},
+       {Item(Item::token, "foo"), {Param("a765", 1)}},
+       {Item(Item::token, "foo"), {Param("a766", 1)}},
+       {Item(Item::token, "foo"), {Param("a767", 1)}},
+       {Item(Item::token, "foo"), {Param("a768", 1)}},
+       {Item(Item::token, "foo"), {Param("a769", 1)}},
+       {Item(Item::token, "foo"), {Param("a770", 1)}},
+       {Item(Item::token, "foo"), {Param("a771", 1)}},
+       {Item(Item::token, "foo"), {Param("a772", 1)}},
+       {Item(Item::token, "foo"), {Param("a773", 1)}},
+       {Item(Item::token, "foo"), {Param("a774", 1)}},
+       {Item(Item::token, "foo"), {Param("a775", 1)}},
+       {Item(Item::token, "foo"), {Param("a776", 1)}},
+       {Item(Item::token, "foo"), {Param("a777", 1)}},
+       {Item(Item::token, "foo"), {Param("a778", 1)}},
+       {Item(Item::token, "foo"), {Param("a779", 1)}},
+       {Item(Item::token, "foo"), {Param("a780", 1)}},
+       {Item(Item::token, "foo"), {Param("a781", 1)}},
+       {Item(Item::token, "foo"), {Param("a782", 1)}},
+       {Item(Item::token, "foo"), {Param("a783", 1)}},
+       {Item(Item::token, "foo"), {Param("a784", 1)}},
+       {Item(Item::token, "foo"), {Param("a785", 1)}},
+       {Item(Item::token, "foo"), {Param("a786", 1)}},
+       {Item(Item::token, "foo"), {Param("a787", 1)}},
+       {Item(Item::token, "foo"), {Param("a788", 1)}},
+       {Item(Item::token, "foo"), {Param("a789", 1)}},
+       {Item(Item::token, "foo"), {Param("a790", 1)}},
+       {Item(Item::token, "foo"), {Param("a791", 1)}},
+       {Item(Item::token, "foo"), {Param("a792", 1)}},
+       {Item(Item::token, "foo"), {Param("a793", 1)}},
+       {Item(Item::token, "foo"), {Param("a794", 1)}},
+       {Item(Item::token, "foo"), {Param("a795", 1)}},
+       {Item(Item::token, "foo"), {Param("a796", 1)}},
+       {Item(Item::token, "foo"), {Param("a797", 1)}},
+       {Item(Item::token, "foo"), {Param("a798", 1)}},
+       {Item(Item::token, "foo"), {Param("a799", 1)}},
+       {Item(Item::token, "foo"), {Param("a800", 1)}},
+       {Item(Item::token, "foo"), {Param("a801", 1)}},
+       {Item(Item::token, "foo"), {Param("a802", 1)}},
+       {Item(Item::token, "foo"), {Param("a803", 1)}},
+       {Item(Item::token, "foo"), {Param("a804", 1)}},
+       {Item(Item::token, "foo"), {Param("a805", 1)}},
+       {Item(Item::token, "foo"), {Param("a806", 1)}},
+       {Item(Item::token, "foo"), {Param("a807", 1)}},
+       {Item(Item::token, "foo"), {Param("a808", 1)}},
+       {Item(Item::token, "foo"), {Param("a809", 1)}},
+       {Item(Item::token, "foo"), {Param("a810", 1)}},
+       {Item(Item::token, "foo"), {Param("a811", 1)}},
+       {Item(Item::token, "foo"), {Param("a812", 1)}},
+       {Item(Item::token, "foo"), {Param("a813", 1)}},
+       {Item(Item::token, "foo"), {Param("a814", 1)}},
+       {Item(Item::token, "foo"), {Param("a815", 1)}},
+       {Item(Item::token, "foo"), {Param("a816", 1)}},
+       {Item(Item::token, "foo"), {Param("a817", 1)}},
+       {Item(Item::token, "foo"), {Param("a818", 1)}},
+       {Item(Item::token, "foo"), {Param("a819", 1)}},
+       {Item(Item::token, "foo"), {Param("a820", 1)}},
+       {Item(Item::token, "foo"), {Param("a821", 1)}},
+       {Item(Item::token, "foo"), {Param("a822", 1)}},
+       {Item(Item::token, "foo"), {Param("a823", 1)}},
+       {Item(Item::token, "foo"), {Param("a824", 1)}},
+       {Item(Item::token, "foo"), {Param("a825", 1)}},
+       {Item(Item::token, "foo"), {Param("a826", 1)}},
+       {Item(Item::token, "foo"), {Param("a827", 1)}},
+       {Item(Item::token, "foo"), {Param("a828", 1)}},
+       {Item(Item::token, "foo"), {Param("a829", 1)}},
+       {Item(Item::token, "foo"), {Param("a830", 1)}},
+       {Item(Item::token, "foo"), {Param("a831", 1)}},
+       {Item(Item::token, "foo"), {Param("a832", 1)}},
+       {Item(Item::token, "foo"), {Param("a833", 1)}},
+       {Item(Item::token, "foo"), {Param("a834", 1)}},
+       {Item(Item::token, "foo"), {Param("a835", 1)}},
+       {Item(Item::token, "foo"), {Param("a836", 1)}},
+       {Item(Item::token, "foo"), {Param("a837", 1)}},
+       {Item(Item::token, "foo"), {Param("a838", 1)}},
+       {Item(Item::token, "foo"), {Param("a839", 1)}},
+       {Item(Item::token, "foo"), {Param("a840", 1)}},
+       {Item(Item::token, "foo"), {Param("a841", 1)}},
+       {Item(Item::token, "foo"), {Param("a842", 1)}},
+       {Item(Item::token, "foo"), {Param("a843", 1)}},
+       {Item(Item::token, "foo"), {Param("a844", 1)}},
+       {Item(Item::token, "foo"), {Param("a845", 1)}},
+       {Item(Item::token, "foo"), {Param("a846", 1)}},
+       {Item(Item::token, "foo"), {Param("a847", 1)}},
+       {Item(Item::token, "foo"), {Param("a848", 1)}},
+       {Item(Item::token, "foo"), {Param("a849", 1)}},
+       {Item(Item::token, "foo"), {Param("a850", 1)}},
+       {Item(Item::token, "foo"), {Param("a851", 1)}},
+       {Item(Item::token, "foo"), {Param("a852", 1)}},
+       {Item(Item::token, "foo"), {Param("a853", 1)}},
+       {Item(Item::token, "foo"), {Param("a854", 1)}},
+       {Item(Item::token, "foo"), {Param("a855", 1)}},
+       {Item(Item::token, "foo"), {Param("a856", 1)}},
+       {Item(Item::token, "foo"), {Param("a857", 1)}},
+       {Item(Item::token, "foo"), {Param("a858", 1)}},
+       {Item(Item::token, "foo"), {Param("a859", 1)}},
+       {Item(Item::token, "foo"), {Param("a860", 1)}},
+       {Item(Item::token, "foo"), {Param("a861", 1)}},
+       {Item(Item::token, "foo"), {Param("a862", 1)}},
+       {Item(Item::token, "foo"), {Param("a863", 1)}},
+       {Item(Item::token, "foo"), {Param("a864", 1)}},
+       {Item(Item::token, "foo"), {Param("a865", 1)}},
+       {Item(Item::token, "foo"), {Param("a866", 1)}},
+       {Item(Item::token, "foo"), {Param("a867", 1)}},
+       {Item(Item::token, "foo"), {Param("a868", 1)}},
+       {Item(Item::token, "foo"), {Param("a869", 1)}},
+       {Item(Item::token, "foo"), {Param("a870", 1)}},
+       {Item(Item::token, "foo"), {Param("a871", 1)}},
+       {Item(Item::token, "foo"), {Param("a872", 1)}},
+       {Item(Item::token, "foo"), {Param("a873", 1)}},
+       {Item(Item::token, "foo"), {Param("a874", 1)}},
+       {Item(Item::token, "foo"), {Param("a875", 1)}},
+       {Item(Item::token, "foo"), {Param("a876", 1)}},
+       {Item(Item::token, "foo"), {Param("a877", 1)}},
+       {Item(Item::token, "foo"), {Param("a878", 1)}},
+       {Item(Item::token, "foo"), {Param("a879", 1)}},
+       {Item(Item::token, "foo"), {Param("a880", 1)}},
+       {Item(Item::token, "foo"), {Param("a881", 1)}},
+       {Item(Item::token, "foo"), {Param("a882", 1)}},
+       {Item(Item::token, "foo"), {Param("a883", 1)}},
+       {Item(Item::token, "foo"), {Param("a884", 1)}},
+       {Item(Item::token, "foo"), {Param("a885", 1)}},
+       {Item(Item::token, "foo"), {Param("a886", 1)}},
+       {Item(Item::token, "foo"), {Param("a887", 1)}},
+       {Item(Item::token, "foo"), {Param("a888", 1)}},
+       {Item(Item::token, "foo"), {Param("a889", 1)}},
+       {Item(Item::token, "foo"), {Param("a890", 1)}},
+       {Item(Item::token, "foo"), {Param("a891", 1)}},
+       {Item(Item::token, "foo"), {Param("a892", 1)}},
+       {Item(Item::token, "foo"), {Param("a893", 1)}},
+       {Item(Item::token, "foo"), {Param("a894", 1)}},
+       {Item(Item::token, "foo"), {Param("a895", 1)}},
+       {Item(Item::token, "foo"), {Param("a896", 1)}},
+       {Item(Item::token, "foo"), {Param("a897", 1)}},
+       {Item(Item::token, "foo"), {Param("a898", 1)}},
+       {Item(Item::token, "foo"), {Param("a899", 1)}},
+       {Item(Item::token, "foo"), {Param("a900", 1)}},
+       {Item(Item::token, "foo"), {Param("a901", 1)}},
+       {Item(Item::token, "foo"), {Param("a902", 1)}},
+       {Item(Item::token, "foo"), {Param("a903", 1)}},
+       {Item(Item::token, "foo"), {Param("a904", 1)}},
+       {Item(Item::token, "foo"), {Param("a905", 1)}},
+       {Item(Item::token, "foo"), {Param("a906", 1)}},
+       {Item(Item::token, "foo"), {Param("a907", 1)}},
+       {Item(Item::token, "foo"), {Param("a908", 1)}},
+       {Item(Item::token, "foo"), {Param("a909", 1)}},
+       {Item(Item::token, "foo"), {Param("a910", 1)}},
+       {Item(Item::token, "foo"), {Param("a911", 1)}},
+       {Item(Item::token, "foo"), {Param("a912", 1)}},
+       {Item(Item::token, "foo"), {Param("a913", 1)}},
+       {Item(Item::token, "foo"), {Param("a914", 1)}},
+       {Item(Item::token, "foo"), {Param("a915", 1)}},
+       {Item(Item::token, "foo"), {Param("a916", 1)}},
+       {Item(Item::token, "foo"), {Param("a917", 1)}},
+       {Item(Item::token, "foo"), {Param("a918", 1)}},
+       {Item(Item::token, "foo"), {Param("a919", 1)}},
+       {Item(Item::token, "foo"), {Param("a920", 1)}},
+       {Item(Item::token, "foo"), {Param("a921", 1)}},
+       {Item(Item::token, "foo"), {Param("a922", 1)}},
+       {Item(Item::token, "foo"), {Param("a923", 1)}},
+       {Item(Item::token, "foo"), {Param("a924", 1)}},
+       {Item(Item::token, "foo"), {Param("a925", 1)}},
+       {Item(Item::token, "foo"), {Param("a926", 1)}},
+       {Item(Item::token, "foo"), {Param("a927", 1)}},
+       {Item(Item::token, "foo"), {Param("a928", 1)}},
+       {Item(Item::token, "foo"), {Param("a929", 1)}},
+       {Item(Item::token, "foo"), {Param("a930", 1)}},
+       {Item(Item::token, "foo"), {Param("a931", 1)}},
+       {Item(Item::token, "foo"), {Param("a932", 1)}},
+       {Item(Item::token, "foo"), {Param("a933", 1)}},
+       {Item(Item::token, "foo"), {Param("a934", 1)}},
+       {Item(Item::token, "foo"), {Param("a935", 1)}},
+       {Item(Item::token, "foo"), {Param("a936", 1)}},
+       {Item(Item::token, "foo"), {Param("a937", 1)}},
+       {Item(Item::token, "foo"), {Param("a938", 1)}},
+       {Item(Item::token, "foo"), {Param("a939", 1)}},
+       {Item(Item::token, "foo"), {Param("a940", 1)}},
+       {Item(Item::token, "foo"), {Param("a941", 1)}},
+       {Item(Item::token, "foo"), {Param("a942", 1)}},
+       {Item(Item::token, "foo"), {Param("a943", 1)}},
+       {Item(Item::token, "foo"), {Param("a944", 1)}},
+       {Item(Item::token, "foo"), {Param("a945", 1)}},
+       {Item(Item::token, "foo"), {Param("a946", 1)}},
+       {Item(Item::token, "foo"), {Param("a947", 1)}},
+       {Item(Item::token, "foo"), {Param("a948", 1)}},
+       {Item(Item::token, "foo"), {Param("a949", 1)}},
+       {Item(Item::token, "foo"), {Param("a950", 1)}},
+       {Item(Item::token, "foo"), {Param("a951", 1)}},
+       {Item(Item::token, "foo"), {Param("a952", 1)}},
+       {Item(Item::token, "foo"), {Param("a953", 1)}},
+       {Item(Item::token, "foo"), {Param("a954", 1)}},
+       {Item(Item::token, "foo"), {Param("a955", 1)}},
+       {Item(Item::token, "foo"), {Param("a956", 1)}},
+       {Item(Item::token, "foo"), {Param("a957", 1)}},
+       {Item(Item::token, "foo"), {Param("a958", 1)}},
+       {Item(Item::token, "foo"), {Param("a959", 1)}},
+       {Item(Item::token, "foo"), {Param("a960", 1)}},
+       {Item(Item::token, "foo"), {Param("a961", 1)}},
+       {Item(Item::token, "foo"), {Param("a962", 1)}},
+       {Item(Item::token, "foo"), {Param("a963", 1)}},
+       {Item(Item::token, "foo"), {Param("a964", 1)}},
+       {Item(Item::token, "foo"), {Param("a965", 1)}},
+       {Item(Item::token, "foo"), {Param("a966", 1)}},
+       {Item(Item::token, "foo"), {Param("a967", 1)}},
+       {Item(Item::token, "foo"), {Param("a968", 1)}},
+       {Item(Item::token, "foo"), {Param("a969", 1)}},
+       {Item(Item::token, "foo"), {Param("a970", 1)}},
+       {Item(Item::token, "foo"), {Param("a971", 1)}},
+       {Item(Item::token, "foo"), {Param("a972", 1)}},
+       {Item(Item::token, "foo"), {Param("a973", 1)}},
+       {Item(Item::token, "foo"), {Param("a974", 1)}},
+       {Item(Item::token, "foo"), {Param("a975", 1)}},
+       {Item(Item::token, "foo"), {Param("a976", 1)}},
+       {Item(Item::token, "foo"), {Param("a977", 1)}},
+       {Item(Item::token, "foo"), {Param("a978", 1)}},
+       {Item(Item::token, "foo"), {Param("a979", 1)}},
+       {Item(Item::token, "foo"), {Param("a980", 1)}},
+       {Item(Item::token, "foo"), {Param("a981", 1)}},
+       {Item(Item::token, "foo"), {Param("a982", 1)}},
+       {Item(Item::token, "foo"), {Param("a983", 1)}},
+       {Item(Item::token, "foo"), {Param("a984", 1)}},
+       {Item(Item::token, "foo"), {Param("a985", 1)}},
+       {Item(Item::token, "foo"), {Param("a986", 1)}},
+       {Item(Item::token, "foo"), {Param("a987", 1)}},
+       {Item(Item::token, "foo"), {Param("a988", 1)}},
+       {Item(Item::token, "foo"), {Param("a989", 1)}},
+       {Item(Item::token, "foo"), {Param("a990", 1)}},
+       {Item(Item::token, "foo"), {Param("a991", 1)}},
+       {Item(Item::token, "foo"), {Param("a992", 1)}},
+       {Item(Item::token, "foo"), {Param("a993", 1)}},
+       {Item(Item::token, "foo"), {Param("a994", 1)}},
+       {Item(Item::token, "foo"), {Param("a995", 1)}},
+       {Item(Item::token, "foo"), {Param("a996", 1)}},
+       {Item(Item::token, "foo"), {Param("a997", 1)}},
+       {Item(Item::token, "foo"), {Param("a998", 1)}},
+       {Item(Item::token, "foo"), {Param("a999", 1)}},
+       {Item(Item::token, "foo"), {Param("a1000", 1)}},
+       {Item(Item::token, "foo"), {Param("a1001", 1)}},
+       {Item(Item::token, "foo"), {Param("a1002", 1)}},
+       {Item(Item::token, "foo"), {Param("a1003", 1)}},
+       {Item(Item::token, "foo"), {Param("a1004", 1)}},
+       {Item(Item::token, "foo"), {Param("a1005", 1)}},
+       {Item(Item::token, "foo"), {Param("a1006", 1)}},
+       {Item(Item::token, "foo"), {Param("a1007", 1)}},
+       {Item(Item::token, "foo"), {Param("a1008", 1)}},
+       {Item(Item::token, "foo"), {Param("a1009", 1)}},
+       {Item(Item::token, "foo"), {Param("a1010", 1)}},
+       {Item(Item::token, "foo"), {Param("a1011", 1)}},
+       {Item(Item::token, "foo"), {Param("a1012", 1)}},
+       {Item(Item::token, "foo"), {Param("a1013", 1)}},
+       {Item(Item::token, "foo"), {Param("a1014", 1)}},
+       {Item(Item::token, "foo"), {Param("a1015", 1)}},
+       {Item(Item::token, "foo"), {Param("a1016", 1)}},
+       {Item(Item::token, "foo"), {Param("a1017", 1)}},
+       {Item(Item::token, "foo"), {Param("a1018", 1)}},
+       {Item(Item::token, "foo"), {Param("a1019", 1)}},
+       {Item(Item::token, "foo"), {Param("a1020", 1)}},
+       {Item(Item::token, "foo"), {Param("a1021", 1)}},
+       {Item(Item::token, "foo"), {Param("a1022", 1)}},
+       {Item(Item::token, "foo"), {Param("a1023", 1)}}}},
      nullptr},
     {"large params",
      "foo;a0=1;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;a9=1;a10=1;a11=1;a12=1;"
@@ -5579,7 +5451,7 @@
      "a238=1;a239=1;a240=1;a241=1;a242=1;a243=1;a244=1;a245=1;a246=1;a247=1;"
      "a248=1;a249=1;a250=1;a251=1;a252=1;a253=1;a254=1;a255=1",
      1685,
-     {{{Item("foo", Item::kTokenType),
+     {{{Item(Item::token, "foo"),
         {Param("a0", 1),   Param("a1", 1),   Param("a2", 1),
          Param("a3", 1),   Param("a4", 1),   Param("a5", 1),
          Param("a6", 1),   Param("a7", 1),   Param("a8", 1),
@@ -5670,7 +5542,7 @@
     {"large param key",
      "foo;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=1",
      70,
-     {{{Item("foo", Item::kTokenType),
+     {{{Item(Item::token, "foo"),
         {Param(
             "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
             1)}}}},
@@ -5871,32 +5743,32 @@
     {"basic parameterised list",
      "abc_123;a=1;b=2; cdef_456, ghi;q=9;r=\"+w\"",
      41,
-     {{{Item("abc_123", Item::kTokenType),
+     {{{Item(Item::token, "abc_123"),
         {Param("a", 1), Param("b", 2), BooleanParam("cdef_456", true)}},
-       {Item("ghi", Item::kTokenType), {Param("q", 9), Param("r", "+w")}}}},
+       {Item(Item::token, "ghi"), {Param("q", 9), Param("r", "+w")}}}},
      "abc_123;a=1;b=2;cdef_456, ghi;q=9;r=\"+w\""},
     {"single item parameterised list",
      "text/html;q=1.0",
      15,
-     {{{Item("text/html", Item::kTokenType), {DoubleParam("q", 1.0)}}}},
+     {{{Item(Item::token, "text/html"), {DoubleParam("q", 1.0)}}}},
      nullptr},
     {"missing parameter value parameterised list",
      "text/html;a;q=1.0",
      17,
-     {{{Item("text/html", Item::kTokenType),
+     {{{Item(Item::token, "text/html"),
         {BooleanParam("a", true), DoubleParam("q", 1.0)}}}},
      nullptr},
     {"missing terminal parameter value parameterised list",
      "text/html;q=1.0;a",
      17,
-     {{{Item("text/html", Item::kTokenType),
+     {{{Item(Item::token, "text/html"),
         {DoubleParam("q", 1.0), BooleanParam("a", true)}}}},
      nullptr},
     {"no whitespace parameterised list",
      "text/html,text/plain;q=0.5",
      26,
-     {{{Item("text/html", Item::kTokenType), {}},
-       {Item("text/plain", Item::kTokenType), {DoubleParam("q", 0.5)}}}},
+     {{{Item(Item::token, "text/html"), {}},
+       {Item(Item::token, "text/plain"), {DoubleParam("q", 0.5)}}}},
      "text/html, text/plain;q=0.5"},
     {"whitespace before = parameterised list", "text/html, text/plain;q =0.5",
      28, std::nullopt, nullptr},
@@ -5907,21 +5779,21 @@
     {"whitespace after ; parameterised list",
      "text/html, text/plain; q=0.5",
      28,
-     {{{Item("text/html", Item::kTokenType), {}},
-       {Item("text/plain", Item::kTokenType), {DoubleParam("q", 0.5)}}}},
+     {{{Item(Item::token, "text/html"), {}},
+       {Item(Item::token, "text/plain"), {DoubleParam("q", 0.5)}}}},
      "text/html, text/plain;q=0.5"},
     {"extra whitespace parameterised list",
      "text/html  ,  text/plain;  q=0.5;  charset=utf-8",
      48,
-     {{{Item("text/html", Item::kTokenType), {}},
-       {Item("text/plain", Item::kTokenType),
+     {{{Item(Item::token, "text/html"), {}},
+       {Item(Item::token, "text/plain"),
         {DoubleParam("q", 0.5), TokenParam("charset", "utf-8")}}}},
      "text/html, text/plain;q=0.5;charset=utf-8"},
     {"two lines parameterised list",
      "text/html, text/plain;q=0.5",
      27,
-     {{{Item("text/html", Item::kTokenType), {}},
-       {Item("text/plain", Item::kTokenType), {DoubleParam("q", 0.5)}}}},
+     {{{Item(Item::token, "text/html"), {}},
+       {Item(Item::token, "text/plain"), {DoubleParam("q", 0.5)}}}},
      "text/html, text/plain;q=0.5"},
     {"trailing comma parameterised list", "text/html,text/plain;q=0.5,", 27,
      std::nullopt, nullptr},
@@ -5930,12 +5802,12 @@
     {"duplicate parameter with different positions",
      "a;b=1;c=2;b=3",
      13,
-     {{{Item("a", Item::kTokenType), {Param("b", 3), Param("c", 2)}}}},
+     {{{Item(Item::token, "a"), {Param("b", 3), Param("c", 2)}}}},
      "a;b=3;c=2"},
     {"parameter ordering",
      "a;m;z;t",
      7,
-     {{{Item("a", Item::kTokenType),
+     {{{Item(Item::token, "a"),
         {BooleanParam("m", true), BooleanParam("z", true),
          BooleanParam("t", true)}}}},
      nullptr},
@@ -5949,38 +5821,37 @@
     {"parameterised inner list",
      "(abc_123);a=1;b=2, cdef_456",
      27,
-     {{{{{Item("abc_123", Item::kTokenType), {}}},
-        {Param("a", 1), Param("b", 2)}},
-       {Item("cdef_456", Item::kTokenType), {}}}},
+     {{{{{Item(Item::token, "abc_123"), {}}}, {Param("a", 1), Param("b", 2)}},
+       {Item(Item::token, "cdef_456"), {}}}},
      nullptr},
     {"parameterised inner list item",
      "(abc_123;a=1;b=2;cdef_456)",
      26,
-     {{{{{Item("abc_123", Item::kTokenType),
+     {{{{{Item(Item::token, "abc_123"),
           {Param("a", 1), Param("b", 2), BooleanParam("cdef_456", true)}}},
         {}}}},
      nullptr},
     {"parameterised inner list with parameterised item",
      "(abc_123;a=1;b=2);cdef_456",
      26,
-     {{{{{Item("abc_123", Item::kTokenType), {Param("a", 1), Param("b", 2)}}},
+     {{{{{Item(Item::token, "abc_123"), {Param("a", 1), Param("b", 2)}}},
         {BooleanParam("cdef_456", true)}}}},
      nullptr},
     // token.json
     {"basic token - list",
      "a_b-c3/*",
      8,
-     {{{Item("a_b-c3/*", Item::kTokenType), {}}}},
+     {{{Item(Item::token, "a_b-c3/*"), {}}}},
      nullptr},
     {"token with capitals - list",
      "fooBar",
      6,
-     {{{Item("fooBar", Item::kTokenType), {}}}},
+     {{{Item(Item::token, "fooBar"), {}}}},
      nullptr},
     {"token starting with capitals - list",
      "FooBar",
      6,
-     {{{Item("FooBar", Item::kTokenType), {}}}},
+     {{{Item(Item::token, "FooBar"), {}}}},
      nullptr},
 };
 
@@ -5999,10 +5870,9 @@
      "en=\"Applepie\", da=:w4ZibGV0w6ZydGUK:",
      36,
      {Dictionary{
-         {{"en", {Item("Applepie"), {}}},
+         {{"en", {Item(Item::string, "Applepie"), {}}},
           {"da",
-           {Item("\303\206blet\303\246rte\012", Item::kByteSequenceType),
-            {}}}}}},
+           {Item(Item::byte_sequence, "\303\206blet\303\246rte\012"), {}}}}}},
      nullptr},
     {"empty dictionary", "", 0, {Dictionary{{}}}, nullptr},
     {"single item dictionary",
@@ -6112,9 +5982,8 @@
      "en=\"Applepie\", da=:w4ZibGV0w6ZydGU=:",
      36,
      {Dictionary{
-         {{"en", {Item("Applepie"), {}}},
-          {"da",
-           {Item("\303\206blet\303\246rte", Item::kByteSequenceType), {}}}}}},
+         {{"en", {Item(Item::string, "Applepie"), {}}},
+          {"da", {Item(Item::byte_sequence, "\303\206blet\303\246rte"), {}}}}}},
      nullptr},
     {"Example-DictHeader (boolean values)",
      "a=?0, b, c; foo=bar",
@@ -6128,8 +5997,8 @@
      34,
      {Dictionary{{{"rating", {Item(1.5), {}}},
                   {"feelings",
-                   {{{Item("joy", Item::kTokenType), {}},
-                     {Item("sadness", Item::kTokenType), {}}},
+                   {{{Item(Item::token, "joy"), {}},
+                     {Item(Item::token, "sadness"), {}}},
                     {}}}}}},
      nullptr},
     {"Example-MixDict",
@@ -7673,8 +7542,7 @@
     {"single item parameterised dict",
      "a=b; q=1.0",
      10,
-     {Dictionary{
-         {{"a", {Item("b", Item::kTokenType), {DoubleParam("q", 1.0)}}}}}},
+     {Dictionary{{{"a", {Item(Item::token, "b"), {DoubleParam("q", 1.0)}}}}}},
      "a=b;q=1.0"},
     {"list item parameterised dictionary",
      "a=(1 2); q=1.0",
@@ -7698,8 +7566,8 @@
     {"no whitespace parameterised dict",
      "a=b;c=1,d=e;f=2",
      15,
-     {Dictionary{{{"a", {Item("b", Item::kTokenType), {Param("c", 1)}}},
-                  {"d", {Item("e", Item::kTokenType), {Param("f", 2)}}}}}},
+     {Dictionary{{{"a", {Item(Item::token, "b"), {Param("c", 1)}}},
+                  {"d", {Item(Item::token, "e"), {Param("f", 2)}}}}}},
      "a=b;c=1, d=e;f=2"},
     {"whitespace before = parameterised dict", "a=b;q =0.5", 10, std::nullopt,
      nullptr},
@@ -7710,22 +7578,20 @@
     {"whitespace after ; parameterised dict",
      "a=b; q=0.5",
      10,
-     {Dictionary{
-         {{"a", {Item("b", Item::kTokenType), {DoubleParam("q", 0.5)}}}}}},
+     {Dictionary{{{"a", {Item(Item::token, "b"), {DoubleParam("q", 0.5)}}}}}},
      "a=b;q=0.5"},
     {"extra whitespace parameterised dict",
      "a=b;  c=1  ,  d=e; f=2; g=3",
      27,
      {Dictionary{
-         {{"a", {Item("b", Item::kTokenType), {Param("c", 1)}}},
-          {"d",
-           {Item("e", Item::kTokenType), {Param("f", 2), Param("g", 3)}}}}}},
+         {{"a", {Item(Item::token, "b"), {Param("c", 1)}}},
+          {"d", {Item(Item::token, "e"), {Param("f", 2), Param("g", 3)}}}}}},
      "a=b;c=1, d=e;f=2;g=3"},
     {"two lines parameterised list",
      "a=b;c=1, d=e;f=2",
      16,
-     {Dictionary{{{"a", {Item("b", Item::kTokenType), {Param("c", 1)}}},
-                  {"d", {Item("e", Item::kTokenType), {Param("f", 2)}}}}}},
+     {Dictionary{{{"a", {Item(Item::token, "b"), {Param("c", 1)}}},
+                  {"d", {Item(Item::token, "e"), {Param("f", 2)}}}}}},
      "a=b;c=1, d=e;f=2"},
     {"trailing comma parameterised list", "a=b; q=1.0,", 11, std::nullopt,
      nullptr},
@@ -7760,412 +7626,476 @@
      "10.0"},
     // serialisation-tests/string-generated.json
     {"0x00 in string - serialise only",
-     {Item(std::string("\000", 1)), {}},
+     {Item(Item::string, std::string("\000", 1)), {}},
      std::nullopt},
-    {"0x01 in string - serialise only", {Item("\001"), {}}, std::nullopt},
-    {"0x02 in string - serialise only", {Item("\002"), {}}, std::nullopt},
-    {"0x03 in string - serialise only", {Item("\003"), {}}, std::nullopt},
-    {"0x04 in string - serialise only", {Item("\004"), {}}, std::nullopt},
-    {"0x05 in string - serialise only", {Item("\005"), {}}, std::nullopt},
-    {"0x06 in string - serialise only", {Item("\006"), {}}, std::nullopt},
-    {"0x07 in string - serialise only", {Item("\007"), {}}, std::nullopt},
-    {"0x08 in string - serialise only", {Item("\010"), {}}, std::nullopt},
-    {"0x09 in string - serialise only", {Item("\t"), {}}, std::nullopt},
-    {"0x0a in string - serialise only", {Item("\n"), {}}, std::nullopt},
-    {"0x0b in string - serialise only", {Item("\013"), {}}, std::nullopt},
-    {"0x0c in string - serialise only", {Item("\014"), {}}, std::nullopt},
-    {"0x0d in string - serialise only", {Item("\r"), {}}, std::nullopt},
-    {"0x0e in string - serialise only", {Item("\016"), {}}, std::nullopt},
-    {"0x0f in string - serialise only", {Item("\017"), {}}, std::nullopt},
-    {"0x10 in string - serialise only", {Item("\020"), {}}, std::nullopt},
-    {"0x11 in string - serialise only", {Item("\021"), {}}, std::nullopt},
-    {"0x12 in string - serialise only", {Item("\022"), {}}, std::nullopt},
-    {"0x13 in string - serialise only", {Item("\023"), {}}, std::nullopt},
-    {"0x14 in string - serialise only", {Item("\024"), {}}, std::nullopt},
-    {"0x15 in string - serialise only", {Item("\025"), {}}, std::nullopt},
-    {"0x16 in string - serialise only", {Item("\026"), {}}, std::nullopt},
-    {"0x17 in string - serialise only", {Item("\027"), {}}, std::nullopt},
-    {"0x18 in string - serialise only", {Item("\030"), {}}, std::nullopt},
-    {"0x19 in string - serialise only", {Item("\031"), {}}, std::nullopt},
-    {"0x1a in string - serialise only", {Item("\032"), {}}, std::nullopt},
-    {"0x1b in string - serialise only", {Item("\033"), {}}, std::nullopt},
-    {"0x1c in string - serialise only", {Item("\034"), {}}, std::nullopt},
-    {"0x1d in string - serialise only", {Item("\035"), {}}, std::nullopt},
-    {"0x1e in string - serialise only", {Item("\036"), {}}, std::nullopt},
-    {"0x1f in string - serialise only", {Item("\037"), {}}, std::nullopt},
-    {"0x7f in string - serialise only", {Item("\177"), {}}, std::nullopt},
+    {"0x01 in string - serialise only",
+     {Item(Item::string, "\001"), {}},
+     std::nullopt},
+    {"0x02 in string - serialise only",
+     {Item(Item::string, "\002"), {}},
+     std::nullopt},
+    {"0x03 in string - serialise only",
+     {Item(Item::string, "\003"), {}},
+     std::nullopt},
+    {"0x04 in string - serialise only",
+     {Item(Item::string, "\004"), {}},
+     std::nullopt},
+    {"0x05 in string - serialise only",
+     {Item(Item::string, "\005"), {}},
+     std::nullopt},
+    {"0x06 in string - serialise only",
+     {Item(Item::string, "\006"), {}},
+     std::nullopt},
+    {"0x07 in string - serialise only",
+     {Item(Item::string, "\007"), {}},
+     std::nullopt},
+    {"0x08 in string - serialise only",
+     {Item(Item::string, "\010"), {}},
+     std::nullopt},
+    {"0x09 in string - serialise only",
+     {Item(Item::string, "\t"), {}},
+     std::nullopt},
+    {"0x0a in string - serialise only",
+     {Item(Item::string, "\n"), {}},
+     std::nullopt},
+    {"0x0b in string - serialise only",
+     {Item(Item::string, "\013"), {}},
+     std::nullopt},
+    {"0x0c in string - serialise only",
+     {Item(Item::string, "\014"), {}},
+     std::nullopt},
+    {"0x0d in string - serialise only",
+     {Item(Item::string, "\r"), {}},
+     std::nullopt},
+    {"0x0e in string - serialise only",
+     {Item(Item::string, "\016"), {}},
+     std::nullopt},
+    {"0x0f in string - serialise only",
+     {Item(Item::string, "\017"), {}},
+     std::nullopt},
+    {"0x10 in string - serialise only",
+     {Item(Item::string, "\020"), {}},
+     std::nullopt},
+    {"0x11 in string - serialise only",
+     {Item(Item::string, "\021"), {}},
+     std::nullopt},
+    {"0x12 in string - serialise only",
+     {Item(Item::string, "\022"), {}},
+     std::nullopt},
+    {"0x13 in string - serialise only",
+     {Item(Item::string, "\023"), {}},
+     std::nullopt},
+    {"0x14 in string - serialise only",
+     {Item(Item::string, "\024"), {}},
+     std::nullopt},
+    {"0x15 in string - serialise only",
+     {Item(Item::string, "\025"), {}},
+     std::nullopt},
+    {"0x16 in string - serialise only",
+     {Item(Item::string, "\026"), {}},
+     std::nullopt},
+    {"0x17 in string - serialise only",
+     {Item(Item::string, "\027"), {}},
+     std::nullopt},
+    {"0x18 in string - serialise only",
+     {Item(Item::string, "\030"), {}},
+     std::nullopt},
+    {"0x19 in string - serialise only",
+     {Item(Item::string, "\031"), {}},
+     std::nullopt},
+    {"0x1a in string - serialise only",
+     {Item(Item::string, "\032"), {}},
+     std::nullopt},
+    {"0x1b in string - serialise only",
+     {Item(Item::string, "\033"), {}},
+     std::nullopt},
+    {"0x1c in string - serialise only",
+     {Item(Item::string, "\034"), {}},
+     std::nullopt},
+    {"0x1d in string - serialise only",
+     {Item(Item::string, "\035"), {}},
+     std::nullopt},
+    {"0x1e in string - serialise only",
+     {Item(Item::string, "\036"), {}},
+     std::nullopt},
+    {"0x1f in string - serialise only",
+     {Item(Item::string, "\037"), {}},
+     std::nullopt},
+    {"0x7f in string - serialise only",
+     {Item(Item::string, "\177"), {}},
+     std::nullopt},
     // serialisation-tests/token-generated.json
     {"0x00 in token - serialise only",
-     {Item(std::string("a\000a", 3), Item::kTokenType), {}},
+     {Item(Item::token, std::string("a\000a", 3)), {}},
      std::nullopt},
     {"0x01 in token - serialise only",
-     {Item("a\001a", Item::kTokenType), {}},
+     {Item(Item::token, "a\001a"), {}},
      std::nullopt},
     {"0x02 in token - serialise only",
-     {Item("a\002a", Item::kTokenType), {}},
+     {Item(Item::token, "a\002a"), {}},
      std::nullopt},
     {"0x03 in token - serialise only",
-     {Item("a\003a", Item::kTokenType), {}},
+     {Item(Item::token, "a\003a"), {}},
      std::nullopt},
     {"0x04 in token - serialise only",
-     {Item("a\004a", Item::kTokenType), {}},
+     {Item(Item::token, "a\004a"), {}},
      std::nullopt},
     {"0x05 in token - serialise only",
-     {Item("a\005a", Item::kTokenType), {}},
+     {Item(Item::token, "a\005a"), {}},
      std::nullopt},
     {"0x06 in token - serialise only",
-     {Item("a\006a", Item::kTokenType), {}},
+     {Item(Item::token, "a\006a"), {}},
      std::nullopt},
     {"0x07 in token - serialise only",
-     {Item("a\007a", Item::kTokenType), {}},
+     {Item(Item::token, "a\007a"), {}},
      std::nullopt},
     {"0x08 in token - serialise only",
-     {Item("a\010a", Item::kTokenType), {}},
+     {Item(Item::token, "a\010a"), {}},
      std::nullopt},
     {"0x09 in token - serialise only",
-     {Item("a\ta", Item::kTokenType), {}},
+     {Item(Item::token, "a\ta"), {}},
      std::nullopt},
     {"0x0a in token - serialise only",
-     {Item("a\na", Item::kTokenType), {}},
+     {Item(Item::token, "a\na"), {}},
      std::nullopt},
     {"0x0b in token - serialise only",
-     {Item("a\013a", Item::kTokenType), {}},
+     {Item(Item::token, "a\013a"), {}},
      std::nullopt},
     {"0x0c in token - serialise only",
-     {Item("a\014a", Item::kTokenType), {}},
+     {Item(Item::token, "a\014a"), {}},
      std::nullopt},
     {"0x0d in token - serialise only",
-     {Item("a\ra", Item::kTokenType), {}},
+     {Item(Item::token, "a\ra"), {}},
      std::nullopt},
     {"0x0e in token - serialise only",
-     {Item("a\016a", Item::kTokenType), {}},
+     {Item(Item::token, "a\016a"), {}},
      std::nullopt},
     {"0x0f in token - serialise only",
-     {Item("a\017a", Item::kTokenType), {}},
+     {Item(Item::token, "a\017a"), {}},
      std::nullopt},
     {"0x10 in token - serialise only",
-     {Item("a\020a", Item::kTokenType), {}},
+     {Item(Item::token, "a\020a"), {}},
      std::nullopt},
     {"0x11 in token - serialise only",
-     {Item("a\021a", Item::kTokenType), {}},
+     {Item(Item::token, "a\021a"), {}},
      std::nullopt},
     {"0x12 in token - serialise only",
-     {Item("a\022a", Item::kTokenType), {}},
+     {Item(Item::token, "a\022a"), {}},
      std::nullopt},
     {"0x13 in token - serialise only",
-     {Item("a\023a", Item::kTokenType), {}},
+     {Item(Item::token, "a\023a"), {}},
      std::nullopt},
     {"0x14 in token - serialise only",
-     {Item("a\024a", Item::kTokenType), {}},
+     {Item(Item::token, "a\024a"), {}},
      std::nullopt},
     {"0x15 in token - serialise only",
-     {Item("a\025a", Item::kTokenType), {}},
+     {Item(Item::token, "a\025a"), {}},
      std::nullopt},
     {"0x16 in token - serialise only",
-     {Item("a\026a", Item::kTokenType), {}},
+     {Item(Item::token, "a\026a"), {}},
      std::nullopt},
     {"0x17 in token - serialise only",
-     {Item("a\027a", Item::kTokenType), {}},
+     {Item(Item::token, "a\027a"), {}},
      std::nullopt},
     {"0x18 in token - serialise only",
-     {Item("a\030a", Item::kTokenType), {}},
+     {Item(Item::token, "a\030a"), {}},
      std::nullopt},
     {"0x19 in token - serialise only",
-     {Item("a\031a", Item::kTokenType), {}},
+     {Item(Item::token, "a\031a"), {}},
      std::nullopt},
     {"0x1a in token - serialise only",
-     {Item("a\032a", Item::kTokenType), {}},
+     {Item(Item::token, "a\032a"), {}},
      std::nullopt},
     {"0x1b in token - serialise only",
-     {Item("a\033a", Item::kTokenType), {}},
+     {Item(Item::token, "a\033a"), {}},
      std::nullopt},
     {"0x1c in token - serialise only",
-     {Item("a\034a", Item::kTokenType), {}},
+     {Item(Item::token, "a\034a"), {}},
      std::nullopt},
     {"0x1d in token - serialise only",
-     {Item("a\035a", Item::kTokenType), {}},
+     {Item(Item::token, "a\035a"), {}},
      std::nullopt},
     {"0x1e in token - serialise only",
-     {Item("a\036a", Item::kTokenType), {}},
+     {Item(Item::token, "a\036a"), {}},
      std::nullopt},
     {"0x1f in token - serialise only",
-     {Item("a\037a", Item::kTokenType), {}},
+     {Item(Item::token, "a\037a"), {}},
      std::nullopt},
     {"0x20 in token - serialise only",
-     {Item("a a", Item::kTokenType), {}},
+     {Item(Item::token, "a a"), {}},
      std::nullopt},
     {"0x22 in token - serialise only",
-     {Item("a\"a", Item::kTokenType), {}},
+     {Item(Item::token, "a\"a"), {}},
      std::nullopt},
     {"0x28 in token - serialise only",
-     {Item("a(a", Item::kTokenType), {}},
+     {Item(Item::token, "a(a"), {}},
      std::nullopt},
     {"0x29 in token - serialise only",
-     {Item("a)a", Item::kTokenType), {}},
+     {Item(Item::token, "a)a"), {}},
      std::nullopt},
     {"0x2c in token - serialise only",
-     {Item("a,a", Item::kTokenType), {}},
+     {Item(Item::token, "a,a"), {}},
      std::nullopt},
     {"0x3b in token - serialise only",
-     {Item("a;a", Item::kTokenType), {}},
+     {Item(Item::token, "a;a"), {}},
      std::nullopt},
     {"0x3c in token - serialise only",
-     {Item("a<a", Item::kTokenType), {}},
+     {Item(Item::token, "a<a"), {}},
      std::nullopt},
     {"0x3d in token - serialise only",
-     {Item("a=a", Item::kTokenType), {}},
+     {Item(Item::token, "a=a"), {}},
      std::nullopt},
     {"0x3e in token - serialise only",
-     {Item("a>a", Item::kTokenType), {}},
+     {Item(Item::token, "a>a"), {}},
      std::nullopt},
     {"0x3f in token - serialise only",
-     {Item("a?a", Item::kTokenType), {}},
+     {Item(Item::token, "a?a"), {}},
      std::nullopt},
     {"0x40 in token - serialise only",
-     {Item("a@a", Item::kTokenType), {}},
+     {Item(Item::token, "a@a"), {}},
      std::nullopt},
     {"0x5b in token - serialise only",
-     {Item("a[a", Item::kTokenType), {}},
+     {Item(Item::token, "a[a"), {}},
      std::nullopt},
     {"0x5c in token - serialise only",
-     {Item("a\\a", Item::kTokenType), {}},
+     {Item(Item::token, "a\\a"), {}},
      std::nullopt},
     {"0x5d in token - serialise only",
-     {Item("a]a", Item::kTokenType), {}},
+     {Item(Item::token, "a]a"), {}},
      std::nullopt},
     {"0x7b in token - serialise only",
-     {Item("a{a", Item::kTokenType), {}},
+     {Item(Item::token, "a{a"), {}},
      std::nullopt},
     {"0x7d in token - serialise only",
-     {Item("a}a", Item::kTokenType), {}},
+     {Item(Item::token, "a}a"), {}},
      std::nullopt},
     {"0x7f in token - serialise only",
-     {Item("a\177a", Item::kTokenType), {}},
+     {Item(Item::token, "a\177a"), {}},
      std::nullopt},
     {"0x00 starting a token - serialise only",
-     {Item(std::string("\000a", 2), Item::kTokenType), {}},
+     {Item(Item::token, std::string("\000a", 2)), {}},
      std::nullopt},
     {"0x01 starting a token - serialise only",
-     {Item("\001a", Item::kTokenType), {}},
+     {Item(Item::token, "\001a"), {}},
      std::nullopt},
     {"0x02 starting a token - serialise only",
-     {Item("\002a", Item::kTokenType), {}},
+     {Item(Item::token, "\002a"), {}},
      std::nullopt},
     {"0x03 starting a token - serialise only",
-     {Item("\003a", Item::kTokenType), {}},
+     {Item(Item::token, "\003a"), {}},
      std::nullopt},
     {"0x04 starting a token - serialise only",
-     {Item("\004a", Item::kTokenType), {}},
+     {Item(Item::token, "\004a"), {}},
      std::nullopt},
     {"0x05 starting a token - serialise only",
-     {Item("\005a", Item::kTokenType), {}},
+     {Item(Item::token, "\005a"), {}},
      std::nullopt},
     {"0x06 starting a token - serialise only",
-     {Item("\006a", Item::kTokenType), {}},
+     {Item(Item::token, "\006a"), {}},
      std::nullopt},
     {"0x07 starting a token - serialise only",
-     {Item("\007a", Item::kTokenType), {}},
+     {Item(Item::token, "\007a"), {}},
      std::nullopt},
     {"0x08 starting a token - serialise only",
-     {Item("\010a", Item::kTokenType), {}},
+     {Item(Item::token, "\010a"), {}},
      std::nullopt},
     {"0x09 starting a token - serialise only",
-     {Item("\ta", Item::kTokenType), {}},
+     {Item(Item::token, "\ta"), {}},
      std::nullopt},
     {"0x0a starting a token - serialise only",
-     {Item("\na", Item::kTokenType), {}},
+     {Item(Item::token, "\na"), {}},
      std::nullopt},
     {"0x0b starting a token - serialise only",
-     {Item("\013a", Item::kTokenType), {}},
+     {Item(Item::token, "\013a"), {}},
      std::nullopt},
     {"0x0c starting a token - serialise only",
-     {Item("\014a", Item::kTokenType), {}},
+     {Item(Item::token, "\014a"), {}},
      std::nullopt},
     {"0x0d starting a token - serialise only",
-     {Item("\ra", Item::kTokenType), {}},
+     {Item(Item::token, "\ra"), {}},
      std::nullopt},
     {"0x0e starting a token - serialise only",
-     {Item("\016a", Item::kTokenType), {}},
+     {Item(Item::token, "\016a"), {}},
      std::nullopt},
     {"0x0f starting a token - serialise only",
-     {Item("\017a", Item::kTokenType), {}},
+     {Item(Item::token, "\017a"), {}},
      std::nullopt},
     {"0x10 starting a token - serialise only",
-     {Item("\020a", Item::kTokenType), {}},
+     {Item(Item::token, "\020a"), {}},
      std::nullopt},
     {"0x11 starting a token - serialise only",
-     {Item("\021a", Item::kTokenType), {}},
+     {Item(Item::token, "\021a"), {}},
      std::nullopt},
     {"0x12 starting a token - serialise only",
-     {Item("\022a", Item::kTokenType), {}},
+     {Item(Item::token, "\022a"), {}},
      std::nullopt},
     {"0x13 starting a token - serialise only",
-     {Item("\023a", Item::kTokenType), {}},
+     {Item(Item::token, "\023a"), {}},
      std::nullopt},
     {"0x14 starting a token - serialise only",
-     {Item("\024a", Item::kTokenType), {}},
+     {Item(Item::token, "\024a"), {}},
      std::nullopt},
     {"0x15 starting a token - serialise only",
-     {Item("\025a", Item::kTokenType), {}},
+     {Item(Item::token, "\025a"), {}},
      std::nullopt},
     {"0x16 starting a token - serialise only",
-     {Item("\026a", Item::kTokenType), {}},
+     {Item(Item::token, "\026a"), {}},
      std::nullopt},
     {"0x17 starting a token - serialise only",
-     {Item("\027a", Item::kTokenType), {}},
+     {Item(Item::token, "\027a"), {}},
      std::nullopt},
     {"0x18 starting a token - serialise only",
-     {Item("\030a", Item::kTokenType), {}},
+     {Item(Item::token, "\030a"), {}},
      std::nullopt},
     {"0x19 starting a token - serialise only",
-     {Item("\031a", Item::kTokenType), {}},
+     {Item(Item::token, "\031a"), {}},
      std::nullopt},
     {"0x1a starting a token - serialise only",
-     {Item("\032a", Item::kTokenType), {}},
+     {Item(Item::token, "\032a"), {}},
      std::nullopt},
     {"0x1b starting a token - serialise only",
-     {Item("\033a", Item::kTokenType), {}},
+     {Item(Item::token, "\033a"), {}},
      std::nullopt},
     {"0x1c starting a token - serialise only",
-     {Item("\034a", Item::kTokenType), {}},
+     {Item(Item::token, "\034a"), {}},
      std::nullopt},
     {"0x1d starting a token - serialise only",
-     {Item("\035a", Item::kTokenType), {}},
+     {Item(Item::token, "\035a"), {}},
      std::nullopt},
     {"0x1e starting a token - serialise only",
-     {Item("\036a", Item::kTokenType), {}},
+     {Item(Item::token, "\036a"), {}},
      std::nullopt},
     {"0x1f starting a token - serialise only",
-     {Item("\037a", Item::kTokenType), {}},
+     {Item(Item::token, "\037a"), {}},
      std::nullopt},
     {"0x20 starting a token - serialise only",
-     {Item(" a", Item::kTokenType), {}},
+     {Item(Item::token, " a"), {}},
      std::nullopt},
     {"0x21 starting a token - serialise only",
-     {Item("!a", Item::kTokenType), {}},
+     {Item(Item::token, "!a"), {}},
      std::nullopt},
     {"0x22 starting a token - serialise only",
-     {Item("\"a", Item::kTokenType), {}},
+     {Item(Item::token, "\"a"), {}},
      std::nullopt},
     {"0x23 starting a token - serialise only",
-     {Item("#a", Item::kTokenType), {}},
+     {Item(Item::token, "#a"), {}},
      std::nullopt},
     {"0x24 starting a token - serialise only",
-     {Item("$a", Item::kTokenType), {}},
+     {Item(Item::token, "$a"), {}},
      std::nullopt},
     {"0x25 starting a token - serialise only",
-     {Item("%a", Item::kTokenType), {}},
+     {Item(Item::token, "%a"), {}},
      std::nullopt},
     {"0x26 starting a token - serialise only",
-     {Item("&a", Item::kTokenType), {}},
+     {Item(Item::token, "&a"), {}},
      std::nullopt},
     {"0x27 starting a token - serialise only",
-     {Item("'a", Item::kTokenType), {}},
+     {Item(Item::token, "'a"), {}},
      std::nullopt},
     {"0x28 starting a token - serialise only",
-     {Item("(a", Item::kTokenType), {}},
+     {Item(Item::token, "(a"), {}},
      std::nullopt},
     {"0x29 starting a token - serialise only",
-     {Item(")a", Item::kTokenType), {}},
+     {Item(Item::token, ")a"), {}},
      std::nullopt},
     {"0x2b starting a token - serialise only",
-     {Item("+a", Item::kTokenType), {}},
+     {Item(Item::token, "+a"), {}},
      std::nullopt},
     {"0x2c starting a token - serialise only",
-     {Item(",a", Item::kTokenType), {}},
+     {Item(Item::token, ",a"), {}},
      std::nullopt},
     {"0x2d starting a token - serialise only",
-     {Item("-a", Item::kTokenType), {}},
+     {Item(Item::token, "-a"), {}},
      std::nullopt},
     {"0x2e starting a token - serialise only",
-     {Item(".a", Item::kTokenType), {}},
+     {Item(Item::token, ".a"), {}},
      std::nullopt},
     {"0x2f starting a token - serialise only",
-     {Item("/a", Item::kTokenType), {}},
+     {Item(Item::token, "/a"), {}},
      std::nullopt},
     {"0x30 starting a token - serialise only",
-     {Item("0a", Item::kTokenType), {}},
+     {Item(Item::token, "0a"), {}},
      std::nullopt},
     {"0x31 starting a token - serialise only",
-     {Item("1a", Item::kTokenType), {}},
+     {Item(Item::token, "1a"), {}},
      std::nullopt},
     {"0x32 starting a token - serialise only",
-     {Item("2a", Item::kTokenType), {}},
+     {Item(Item::token, "2a"), {}},
      std::nullopt},
     {"0x33 starting a token - serialise only",
-     {Item("3a", Item::kTokenType), {}},
+     {Item(Item::token, "3a"), {}},
      std::nullopt},
     {"0x34 starting a token - serialise only",
-     {Item("4a", Item::kTokenType), {}},
+     {Item(Item::token, "4a"), {}},
      std::nullopt},
     {"0x35 starting a token - serialise only",
-     {Item("5a", Item::kTokenType), {}},
+     {Item(Item::token, "5a"), {}},
      std::nullopt},
     {"0x36 starting a token - serialise only",
-     {Item("6a", Item::kTokenType), {}},
+     {Item(Item::token, "6a"), {}},
      std::nullopt},
     {"0x37 starting a token - serialise only",
-     {Item("7a", Item::kTokenType), {}},
+     {Item(Item::token, "7a"), {}},
      std::nullopt},
     {"0x38 starting a token - serialise only",
-     {Item("8a", Item::kTokenType), {}},
+     {Item(Item::token, "8a"), {}},
      std::nullopt},
     {"0x39 starting a token - serialise only",
-     {Item("9a", Item::kTokenType), {}},
+     {Item(Item::token, "9a"), {}},
      std::nullopt},
     {"0x3a starting a token - serialise only",
-     {Item(":a", Item::kTokenType), {}},
+     {Item(Item::token, ":a"), {}},
      std::nullopt},
     {"0x3b starting a token - serialise only",
-     {Item(";a", Item::kTokenType), {}},
+     {Item(Item::token, ";a"), {}},
      std::nullopt},
     {"0x3c starting a token - serialise only",
-     {Item("<a", Item::kTokenType), {}},
+     {Item(Item::token, "<a"), {}},
      std::nullopt},
     {"0x3d starting a token - serialise only",
-     {Item("=a", Item::kTokenType), {}},
+     {Item(Item::token, "=a"), {}},
      std::nullopt},
     {"0x3e starting a token - serialise only",
-     {Item(">a", Item::kTokenType), {}},
+     {Item(Item::token, ">a"), {}},
      std::nullopt},
     {"0x3f starting a token - serialise only",
-     {Item("?a", Item::kTokenType), {}},
+     {Item(Item::token, "?a"), {}},
      std::nullopt},
     {"0x40 starting a token - serialise only",
-     {Item("@a", Item::kTokenType), {}},
+     {Item(Item::token, "@a"), {}},
      std::nullopt},
     {"0x5b starting a token - serialise only",
-     {Item("[a", Item::kTokenType), {}},
+     {Item(Item::token, "[a"), {}},
      std::nullopt},
     {"0x5c starting a token - serialise only",
-     {Item("\\a", Item::kTokenType), {}},
+     {Item(Item::token, "\\a"), {}},
      std::nullopt},
     {"0x5d starting a token - serialise only",
-     {Item("]a", Item::kTokenType), {}},
+     {Item(Item::token, "]a"), {}},
      std::nullopt},
     {"0x5e starting a token - serialise only",
-     {Item("^a", Item::kTokenType), {}},
+     {Item(Item::token, "^a"), {}},
      std::nullopt},
     {"0x5f starting a token - serialise only",
-     {Item("_a", Item::kTokenType), {}},
+     {Item(Item::token, "_a"), {}},
      std::nullopt},
     {"0x60 starting a token - serialise only",
-     {Item("`a", Item::kTokenType), {}},
+     {Item(Item::token, "`a"), {}},
      std::nullopt},
     {"0x7b starting a token - serialise only",
-     {Item("{a", Item::kTokenType), {}},
+     {Item(Item::token, "{a"), {}},
      std::nullopt},
     {"0x7c starting a token - serialise only",
-     {Item("|a", Item::kTokenType), {}},
+     {Item(Item::token, "|a"), {}},
      std::nullopt},
     {"0x7d starting a token - serialise only",
-     {Item("}a", Item::kTokenType), {}},
+     {Item(Item::token, "}a"), {}},
      std::nullopt},
     {"0x7e starting a token - serialise only",
-     {Item("~a", Item::kTokenType), {}},
+     {Item(Item::token, "~a"), {}},
      std::nullopt},
     {"0x7f starting a token - serialise only",
-     {Item("\177a", Item::kTokenType), {}},
+     {Item(Item::token, "\177a"), {}},
      std::nullopt},
 };
 
@@ -8176,571 +8106,571 @@
 } serialization_only_list_test_cases[] = {
     // serialisation-tests/key-generated.json
     {"0x00 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param(std::string("a\000a", 3), 1)}}},
+     {{Item(Item::token, "foo"), {Param(std::string("a\000a", 3), 1)}}},
      std::nullopt},
     {"0x01 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\001a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\001a", 1)}}},
      std::nullopt},
     {"0x02 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\002a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\002a", 1)}}},
      std::nullopt},
     {"0x03 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\003a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\003a", 1)}}},
      std::nullopt},
     {"0x04 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\004a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\004a", 1)}}},
      std::nullopt},
     {"0x05 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\005a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\005a", 1)}}},
      std::nullopt},
     {"0x06 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\006a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\006a", 1)}}},
      std::nullopt},
     {"0x07 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\007a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\007a", 1)}}},
      std::nullopt},
     {"0x08 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\010a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\010a", 1)}}},
      std::nullopt},
     {"0x09 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\ta", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\ta", 1)}}},
      std::nullopt},
     {"0x0a in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\na", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\na", 1)}}},
      std::nullopt},
     {"0x0b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\013a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\013a", 1)}}},
      std::nullopt},
     {"0x0c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\014a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\014a", 1)}}},
      std::nullopt},
     {"0x0d in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\ra", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\ra", 1)}}},
      std::nullopt},
     {"0x0e in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\016a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\016a", 1)}}},
      std::nullopt},
     {"0x0f in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\017a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\017a", 1)}}},
      std::nullopt},
     {"0x10 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\020a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\020a", 1)}}},
      std::nullopt},
     {"0x11 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\021a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\021a", 1)}}},
      std::nullopt},
     {"0x12 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\022a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\022a", 1)}}},
      std::nullopt},
     {"0x13 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\023a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\023a", 1)}}},
      std::nullopt},
     {"0x14 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\024a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\024a", 1)}}},
      std::nullopt},
     {"0x15 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\025a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\025a", 1)}}},
      std::nullopt},
     {"0x16 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\026a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\026a", 1)}}},
      std::nullopt},
     {"0x17 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\027a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\027a", 1)}}},
      std::nullopt},
     {"0x18 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\030a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\030a", 1)}}},
      std::nullopt},
     {"0x19 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\031a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\031a", 1)}}},
      std::nullopt},
     {"0x1a in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\032a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\032a", 1)}}},
      std::nullopt},
     {"0x1b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\033a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\033a", 1)}}},
      std::nullopt},
     {"0x1c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\034a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\034a", 1)}}},
      std::nullopt},
     {"0x1d in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\035a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\035a", 1)}}},
      std::nullopt},
     {"0x1e in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\036a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\036a", 1)}}},
      std::nullopt},
     {"0x1f in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\037a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\037a", 1)}}},
      std::nullopt},
     {"0x20 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a a", 1)}}},
      std::nullopt},
     {"0x21 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a!a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a!a", 1)}}},
      std::nullopt},
     {"0x22 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\"a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\"a", 1)}}},
      std::nullopt},
     {"0x23 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a#a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a#a", 1)}}},
      std::nullopt},
     {"0x24 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a$a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a$a", 1)}}},
      std::nullopt},
     {"0x25 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a%a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a%a", 1)}}},
      std::nullopt},
     {"0x26 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a&a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a&a", 1)}}},
      std::nullopt},
     {"0x27 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a'a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a'a", 1)}}},
      std::nullopt},
     {"0x28 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a(a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a(a", 1)}}},
      std::nullopt},
     {"0x29 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a)a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a)a", 1)}}},
      std::nullopt},
     {"0x2b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a+a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a+a", 1)}}},
      std::nullopt},
     {"0x2c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a,a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a,a", 1)}}},
      std::nullopt},
     {"0x2f in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a/a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a/a", 1)}}},
      std::nullopt},
     {"0x3a in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a:a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a:a", 1)}}},
      std::nullopt},
     {"0x3b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a;a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a;a", 1)}}},
      std::nullopt},
     {"0x3c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a<a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a<a", 1)}}},
      std::nullopt},
     {"0x3d in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a=a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a=a", 1)}}},
      std::nullopt},
     {"0x3e in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a>a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a>a", 1)}}},
      std::nullopt},
     {"0x3f in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a?a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a?a", 1)}}},
      std::nullopt},
     {"0x40 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a@a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a@a", 1)}}},
      std::nullopt},
     {"0x41 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aAa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aAa", 1)}}},
      std::nullopt},
     {"0x42 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aBa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aBa", 1)}}},
      std::nullopt},
     {"0x43 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aCa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aCa", 1)}}},
      std::nullopt},
     {"0x44 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aDa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aDa", 1)}}},
      std::nullopt},
     {"0x45 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aEa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aEa", 1)}}},
      std::nullopt},
     {"0x46 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aFa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aFa", 1)}}},
      std::nullopt},
     {"0x47 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aGa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aGa", 1)}}},
      std::nullopt},
     {"0x48 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aHa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aHa", 1)}}},
      std::nullopt},
     {"0x49 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aIa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aIa", 1)}}},
      std::nullopt},
     {"0x4a in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aJa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aJa", 1)}}},
      std::nullopt},
     {"0x4b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aKa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aKa", 1)}}},
      std::nullopt},
     {"0x4c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aLa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aLa", 1)}}},
      std::nullopt},
     {"0x4d in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aMa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aMa", 1)}}},
      std::nullopt},
     {"0x4e in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aNa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aNa", 1)}}},
      std::nullopt},
     {"0x4f in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aOa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aOa", 1)}}},
      std::nullopt},
     {"0x50 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aPa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aPa", 1)}}},
      std::nullopt},
     {"0x51 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aQa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aQa", 1)}}},
      std::nullopt},
     {"0x52 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aRa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aRa", 1)}}},
      std::nullopt},
     {"0x53 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aSa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aSa", 1)}}},
      std::nullopt},
     {"0x54 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aTa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aTa", 1)}}},
      std::nullopt},
     {"0x55 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aUa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aUa", 1)}}},
      std::nullopt},
     {"0x56 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aVa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aVa", 1)}}},
      std::nullopt},
     {"0x57 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aWa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aWa", 1)}}},
      std::nullopt},
     {"0x58 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aXa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aXa", 1)}}},
      std::nullopt},
     {"0x59 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aYa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aYa", 1)}}},
      std::nullopt},
     {"0x5a in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("aZa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("aZa", 1)}}},
      std::nullopt},
     {"0x5b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a[a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a[a", 1)}}},
      std::nullopt},
     {"0x5c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\\a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\\a", 1)}}},
      std::nullopt},
     {"0x5d in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a]a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a]a", 1)}}},
      std::nullopt},
     {"0x5e in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a^a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a^a", 1)}}},
      std::nullopt},
     {"0x60 in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a`a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a`a", 1)}}},
      std::nullopt},
     {"0x7b in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a{a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a{a", 1)}}},
      std::nullopt},
     {"0x7c in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a|a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a|a", 1)}}},
      std::nullopt},
     {"0x7d in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a}a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a}a", 1)}}},
      std::nullopt},
     {"0x7e in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a~a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a~a", 1)}}},
      std::nullopt},
     {"0x7f in parameterised list key - serialise only",
-     {{Item("foo", Item::kTokenType), {Param("a\177a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("a\177a", 1)}}},
      std::nullopt},
     {"0x00 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(std::string("\000a", 2), 1)}}},
+     {{Item(Item::token, "foo"), {Param(std::string("\000a", 2), 1)}}},
      std::nullopt},
     {"0x01 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\001a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\001a", 1)}}},
      std::nullopt},
     {"0x02 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\002a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\002a", 1)}}},
      std::nullopt},
     {"0x03 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\003a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\003a", 1)}}},
      std::nullopt},
     {"0x04 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\004a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\004a", 1)}}},
      std::nullopt},
     {"0x05 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\005a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\005a", 1)}}},
      std::nullopt},
     {"0x06 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\006a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\006a", 1)}}},
      std::nullopt},
     {"0x07 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\007a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\007a", 1)}}},
      std::nullopt},
     {"0x08 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\010a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\010a", 1)}}},
      std::nullopt},
     {"0x09 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\ta", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\ta", 1)}}},
      std::nullopt},
     {"0x0a starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\na", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\na", 1)}}},
      std::nullopt},
     {"0x0b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\013a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\013a", 1)}}},
      std::nullopt},
     {"0x0c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\014a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\014a", 1)}}},
      std::nullopt},
     {"0x0d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\ra", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\ra", 1)}}},
      std::nullopt},
     {"0x0e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\016a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\016a", 1)}}},
      std::nullopt},
     {"0x0f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\017a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\017a", 1)}}},
      std::nullopt},
     {"0x10 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\020a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\020a", 1)}}},
      std::nullopt},
     {"0x11 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\021a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\021a", 1)}}},
      std::nullopt},
     {"0x12 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\022a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\022a", 1)}}},
      std::nullopt},
     {"0x13 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\023a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\023a", 1)}}},
      std::nullopt},
     {"0x14 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\024a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\024a", 1)}}},
      std::nullopt},
     {"0x15 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\025a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\025a", 1)}}},
      std::nullopt},
     {"0x16 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\026a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\026a", 1)}}},
      std::nullopt},
     {"0x17 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\027a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\027a", 1)}}},
      std::nullopt},
     {"0x18 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\030a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\030a", 1)}}},
      std::nullopt},
     {"0x19 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\031a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\031a", 1)}}},
      std::nullopt},
     {"0x1a starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\032a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\032a", 1)}}},
      std::nullopt},
     {"0x1b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\033a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\033a", 1)}}},
      std::nullopt},
     {"0x1c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\034a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\034a", 1)}}},
      std::nullopt},
     {"0x1d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\035a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\035a", 1)}}},
      std::nullopt},
     {"0x1e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\036a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\036a", 1)}}},
      std::nullopt},
     {"0x1f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\037a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\037a", 1)}}},
      std::nullopt},
     {"0x20 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(" a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(" a", 1)}}},
      std::nullopt},
     {"0x21 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("!a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("!a", 1)}}},
      std::nullopt},
     {"0x22 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\"a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\"a", 1)}}},
      std::nullopt},
     {"0x23 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("#a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("#a", 1)}}},
      std::nullopt},
     {"0x24 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("$a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("$a", 1)}}},
      std::nullopt},
     {"0x25 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("%a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("%a", 1)}}},
      std::nullopt},
     {"0x26 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("&a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("&a", 1)}}},
      std::nullopt},
     {"0x27 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("'a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("'a", 1)}}},
      std::nullopt},
     {"0x28 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("(a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("(a", 1)}}},
      std::nullopt},
     {"0x29 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(")a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(")a", 1)}}},
      std::nullopt},
     {"0x2b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("+a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("+a", 1)}}},
      std::nullopt},
     {"0x2c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(",a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(",a", 1)}}},
      std::nullopt},
     {"0x2d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("-a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("-a", 1)}}},
      std::nullopt},
     {"0x2e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(".a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(".a", 1)}}},
      std::nullopt},
     {"0x2f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("/a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("/a", 1)}}},
      std::nullopt},
     {"0x30 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("0a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("0a", 1)}}},
      std::nullopt},
     {"0x31 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("1a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("1a", 1)}}},
      std::nullopt},
     {"0x32 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("2a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("2a", 1)}}},
      std::nullopt},
     {"0x33 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("3a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("3a", 1)}}},
      std::nullopt},
     {"0x34 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("4a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("4a", 1)}}},
      std::nullopt},
     {"0x35 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("5a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("5a", 1)}}},
      std::nullopt},
     {"0x36 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("6a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("6a", 1)}}},
      std::nullopt},
     {"0x37 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("7a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("7a", 1)}}},
      std::nullopt},
     {"0x38 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("8a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("8a", 1)}}},
      std::nullopt},
     {"0x39 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("9a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("9a", 1)}}},
      std::nullopt},
     {"0x3a starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(":a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(":a", 1)}}},
      std::nullopt},
     {"0x3b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(";a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(";a", 1)}}},
      std::nullopt},
     {"0x3c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("<a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("<a", 1)}}},
      std::nullopt},
     {"0x3d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("=a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("=a", 1)}}},
      std::nullopt},
     {"0x3e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param(">a", 1)}}},
+     {{Item(Item::token, "foo"), {Param(">a", 1)}}},
      std::nullopt},
     {"0x3f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("?a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("?a", 1)}}},
      std::nullopt},
     {"0x40 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("@a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("@a", 1)}}},
      std::nullopt},
     {"0x41 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Aa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Aa", 1)}}},
      std::nullopt},
     {"0x42 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ba", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ba", 1)}}},
      std::nullopt},
     {"0x43 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ca", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ca", 1)}}},
      std::nullopt},
     {"0x44 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Da", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Da", 1)}}},
      std::nullopt},
     {"0x45 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ea", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ea", 1)}}},
      std::nullopt},
     {"0x46 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Fa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Fa", 1)}}},
      std::nullopt},
     {"0x47 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ga", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ga", 1)}}},
      std::nullopt},
     {"0x48 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ha", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ha", 1)}}},
      std::nullopt},
     {"0x49 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ia", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ia", 1)}}},
      std::nullopt},
     {"0x4a starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ja", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ja", 1)}}},
      std::nullopt},
     {"0x4b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ka", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ka", 1)}}},
      std::nullopt},
     {"0x4c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("La", 1)}}},
+     {{Item(Item::token, "foo"), {Param("La", 1)}}},
      std::nullopt},
     {"0x4d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ma", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ma", 1)}}},
      std::nullopt},
     {"0x4e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Na", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Na", 1)}}},
      std::nullopt},
     {"0x4f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Oa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Oa", 1)}}},
      std::nullopt},
     {"0x50 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Pa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Pa", 1)}}},
      std::nullopt},
     {"0x51 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Qa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Qa", 1)}}},
      std::nullopt},
     {"0x52 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ra", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ra", 1)}}},
      std::nullopt},
     {"0x53 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Sa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Sa", 1)}}},
      std::nullopt},
     {"0x54 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ta", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ta", 1)}}},
      std::nullopt},
     {"0x55 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ua", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ua", 1)}}},
      std::nullopt},
     {"0x56 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Va", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Va", 1)}}},
      std::nullopt},
     {"0x57 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Wa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Wa", 1)}}},
      std::nullopt},
     {"0x58 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Xa", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Xa", 1)}}},
      std::nullopt},
     {"0x59 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Ya", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Ya", 1)}}},
      std::nullopt},
     {"0x5a starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("Za", 1)}}},
+     {{Item(Item::token, "foo"), {Param("Za", 1)}}},
      std::nullopt},
     {"0x5b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("[a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("[a", 1)}}},
      std::nullopt},
     {"0x5c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\\a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\\a", 1)}}},
      std::nullopt},
     {"0x5d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("]a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("]a", 1)}}},
      std::nullopt},
     {"0x5e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("^a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("^a", 1)}}},
      std::nullopt},
     {"0x5f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("_a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("_a", 1)}}},
      std::nullopt},
     {"0x60 starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("`a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("`a", 1)}}},
      std::nullopt},
     {"0x7b starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("{a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("{a", 1)}}},
      std::nullopt},
     {"0x7c starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("|a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("|a", 1)}}},
      std::nullopt},
     {"0x7d starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("}a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("}a", 1)}}},
      std::nullopt},
     {"0x7e starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("~a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("~a", 1)}}},
      std::nullopt},
     {"0x7f starting a parameterised list key",
-     {{Item("foo", Item::kTokenType), {Param("\177a", 1)}}},
+     {{Item(Item::token, "foo"), {Param("\177a", 1)}}},
      std::nullopt},
 };
 
diff --git a/quiche/common/structured_headers_test.cc b/quiche/common/structured_headers_test.cc
index d2cfc7f..e126103 100644
--- a/quiche/common/structured_headers_test.cc
+++ b/quiche/common/structured_headers_test.cc
@@ -19,38 +19,39 @@
 
 // Helpers to make test cases clearer
 
-Item Token(std::string value) { return Item(value, Item::kTokenType); }
+Item Token(absl::string_view value) { return Item(Item::token, value); }
 
 Item Integer(int64_t value) { return Item(value); }
 
 // Parameter with null value, only used in Structured Headers Draft 09
 std::pair<std::string, Item> NullParam(std::string key) {
-  return std::make_pair(key, Item());
+  return std::make_pair(std::move(key), Item());
 }
 
 std::pair<std::string, Item> BooleanParam(std::string key, bool value) {
-  return std::make_pair(key, Item(value));
+  return std::make_pair(std::move(key), Item(value));
 }
 
 std::pair<std::string, Item> DoubleParam(std::string key, double value) {
-  return std::make_pair(key, Item(value));
+  return std::make_pair(std::move(key), Item(value));
 }
 
 std::pair<std::string, Item> Param(std::string key, int64_t value) {
-  return std::make_pair(key, Item(value));
+  return std::make_pair(std::move(key), Item(value));
 }
 
-std::pair<std::string, Item> Param(std::string key, std::string value) {
-  return std::make_pair(key, Item(value));
+std::pair<std::string, Item> Param(std::string key, absl::string_view value) {
+  return std::make_pair(std::move(key), Item(Item::string, value));
 }
 
 std::pair<std::string, Item> ByteSequenceParam(std::string key,
-                                               std::string value) {
-  return std::make_pair(key, Item(value, Item::kByteSequenceType));
+                                               absl::string_view value) {
+  return std::make_pair(std::move(key), Item(Item::byte_sequence, value));
 }
 
-std::pair<std::string, Item> TokenParam(std::string key, std::string value) {
-  return std::make_pair(key, Token(value));
+std::pair<std::string, Item> TokenParam(std::string key,
+                                        absl::string_view value) {
+  return std::make_pair(std::move(key), Token(value));
 }
 
 // Test cases taken from https://github.com/httpwg/structured-header-tests can
@@ -79,22 +80,26 @@
     {"trailing decimal", "1.", Item(1.0), "1.0", /*strict=*/false},
     {"trailing decimal strict", "1.", std::nullopt, nullptr, /*strict=*/true},
     // String
-    {"basic string", "\"foo\"", Item("foo"), nullptr},
+    {"basic string", "\"foo\"", Item(Item::string, "foo"), nullptr},
     {"non-ascii string", "\"f\xC3\xBC\xC3\xBC\"", std::nullopt, nullptr},
     // Additional tests
-    {"valid quoting containing \\n", "\"\\\\n\"", Item("\\n"), nullptr},
-    {"valid quoting containing \\t", "\"\\\\t\"", Item("\\t"), nullptr},
-    {"valid quoting containing \\x", "\"\\\\x61\"", Item("\\x61"), nullptr},
+    {"valid quoting containing \\n", "\"\\\\n\"", Item(Item::string, "\\n"),
+     nullptr},
+    {"valid quoting containing \\t", "\"\\\\t\"", Item(Item::string, "\\t"),
+     nullptr},
+    {"valid quoting containing \\x", "\"\\\\x61\"", Item(Item::string, "\\x61"),
+     nullptr},
     {"c-style hex escape in string", "\"\\x61\"", std::nullopt, nullptr},
-    {"valid quoting containing \\u", "\"\\\\u0061\"", Item("\\u0061"), nullptr},
+    {"valid quoting containing \\u", "\"\\\\u0061\"",
+     Item(Item::string, "\\u0061"), nullptr},
     {"c-style unicode escape in string", "\"\\u0061\"", std::nullopt, nullptr},
     // TODO(b/393153699): This input should be rejected.
-    {"bad padding dot", ":YQ=.:", Item("a", Item::kByteSequenceType),
+    {"bad padding dot", ":YQ=.:", Item(Item::byte_sequence, "a"),
      ":YQ==:", /*strict=*/false},
     {"bad padding dot strict", ":YQ=.:", std::nullopt,
      ":YQ==:", /*strict=*/true},
     // TODO(b/393408763): This input should be rejected.
-    {"all whitespace", ":    :", Item("", Item::kByteSequenceType),
+    {"all whitespace", ":    :", Item(Item::byte_sequence, ""),
      "::", /*strict=*/false},
     {"all whitespace strict", ":    :", std::nullopt, "::", /*strict=*/true},
 };
@@ -109,18 +114,17 @@
     {"too large negative integer", "-9223372036854775808", std::nullopt,
      nullptr},
     // Byte Sequence
-    {"basic binary", "*aGVsbG8=*", Item("hello", Item::kByteSequenceType),
-     nullptr},
-    {"empty binary", "**", Item("", Item::kByteSequenceType), nullptr},
-    {"bad paddding", "*aGVsbG8*", Item("hello", Item::kByteSequenceType),
+    {"basic binary", "*aGVsbG8=*", Item(Item::byte_sequence, "hello"), nullptr},
+    {"empty binary", "**", Item(Item::byte_sequence, ""), nullptr},
+    {"bad paddding", "*aGVsbG8*", Item(Item::byte_sequence, "hello"),
      "*aGVsbG8=*"},
     {"bad end delimiter", "*aGVsbG8=", std::nullopt, nullptr},
     {"extra whitespace", "*aGVsb G8=*", std::nullopt, nullptr},
     {"extra chars", "*aGVsbG!8=*", std::nullopt, nullptr},
     {"suffix chars", "*aGVsbG8=!*", std::nullopt, nullptr},
-    {"non-zero pad bits", "*iZ==*", Item("\x89", Item::kByteSequenceType),
+    {"non-zero pad bits", "*iZ==*", Item(Item::byte_sequence, "\x89"),
      "*iQ==*"},
-    {"non-ASCII binary", "*/+Ah*", Item("\xFF\xE0!", Item::kByteSequenceType),
+    {"non-ASCII binary", "*/+Ah*", Item(Item::byte_sequence, "\xFF\xE0!"),
      nullptr},
     {"base64url binary", "*_-Ah*", std::nullopt, nullptr},
     {"token with leading asterisk", "*foo", std::nullopt, nullptr},
@@ -256,8 +260,8 @@
 } dictionary_test_cases[] = {
     {"basic dictionary",
      "en=\"Applepie\", da=:aGVsbG8=:",
-     {Dictionary{{{"en", {Item("Applepie"), {}}},
-                  {"da", {Item("hello", Item::kByteSequenceType), {}}}}}},
+     {Dictionary{{{"en", {Item(Item::string, "Applepie"), {}}},
+                  {"da", {Item(Item::byte_sequence, "hello"), {}}}}}},
      nullptr},
     {"tab separated dictionary",
      "a=1\t,\tb=2",
@@ -273,8 +277,9 @@
     {"parameterised inner list member dict",
      "a=(\"1\";b=1;c=?0 \"2\");d=\"e\"",
      {Dictionary{{{"a",
-                   {{{Item("1"), {Param("b", 1), BooleanParam("c", false)}},
-                     {Item("2"), {}}},
+                   {{{Item(Item::string, "1"),
+                      {Param("b", 1), BooleanParam("c", false)}},
+                     {Item(Item::string, "2"), {}}},
                     {Param("d", "e")}}}}}},
      nullptr},
     {"explicit true value with parameter",
@@ -550,8 +555,8 @@
   };
   for (const auto& bad_key : bad_keys) {
     SCOPED_TRACE(bad_key.name);
-    std::optional<std::string> serialization =
-        SerializeItem(ParameterizedItem("a", {{bad_key.value, "a"}}));
+    std::optional<std::string> serialization = SerializeItem(ParameterizedItem(
+        Item(Item::string, "a"), {{bad_key.value, Item(Item::string, "a")}}));
     EXPECT_FALSE(serialization.has_value()) << *serialization;
   }
 }
@@ -572,7 +577,7 @@
   for (const auto& bad_string : bad_strings) {
     SCOPED_TRACE(bad_string.name);
     std::optional<std::string> serialization =
-        SerializeItem(Item(bad_string.value));
+        SerializeItem(Item(Item::string, bad_string.value));
     EXPECT_FALSE(serialization.has_value()) << *serialization;
   }
 }
@@ -687,8 +692,8 @@
 TEST(StructuredHeaderTest, DictionaryConstructors) {
   const std::string key0 = "key0";
   const std::string key1 = "key1";
-  const ParameterizedMember member0(Item("Applepie"));
-  const ParameterizedMember member1(Item("hello", Item::kByteSequenceType));
+  const ParameterizedMember member0(Item(Item::string, "Applepie"));
+  const ParameterizedMember member1(Item(Item::byte_sequence, "hello"));
 
   Dictionary dict;
   EXPECT_TRUE(dict.empty());
@@ -711,7 +716,7 @@
 
 TEST(StructuredHeaderTest, DictionaryClear) {
   const std::string key0 = "key0";
-  const ParameterizedMember member0(Item("Applepie"));
+  const ParameterizedMember member0(Item(Item::string, "Applepie"));
 
   Dictionary dict({{key0, member0}});
   EXPECT_EQ(1U, dict.size());
@@ -728,9 +733,9 @@
   const std::string key0 = "key0";
   const std::string key1 = "key1";
 
-  const ParameterizedMember nonempty_member0(Item("Applepie"));
+  const ParameterizedMember nonempty_member0(Item(Item::string, "Applepie"));
   const ParameterizedMember nonempty_member1(
-      Item("hello", Item::kByteSequenceType));
+      Item(Item::byte_sequence, "hello"));
   const ParameterizedMember empty_member;
 
   Dictionary dict{{{key0, nonempty_member0}}};
@@ -796,7 +801,7 @@
 }
 
 TEST(StructuredHeaderTest, GetIfToken) {
-  const Item kValue("abc", Item::kTokenType);
+  const Item kValue(Item::token, "abc");
   EXPECT_FALSE(kValue.GetIfByteSequence());
   EXPECT_FALSE(kValue.GetIfString());
   const std::string* ptr = kValue.GetIfToken();
@@ -805,7 +810,7 @@
 }
 
 TEST(StructuredHeaderTest, GetIfByteSequence) {
-  const Item kValue("def", Item::kByteSequenceType);
+  const Item kValue(Item::byte_sequence, "def");
   EXPECT_FALSE(kValue.GetIfString());
   EXPECT_FALSE(kValue.GetIfToken());
   const std::string* ptr = kValue.GetIfByteSequence();
@@ -813,6 +818,39 @@
   EXPECT_EQ(*ptr, "def");
 }
 
+TEST(StructuredHeaderTest, TagBasedConstructors) {
+  using ::testing::Eq;
+  using ::testing::Pointee;
+
+  constexpr absl::string_view kWithNull("a\0b", 3);
+
+  EXPECT_THAT(Item(Item::string, "hello").GetIfString(), Pointee(Eq("hello")));
+  EXPECT_THAT(Item(Item::string, absl::string_view("world")).GetIfString(),
+              Pointee(Eq("world")));
+  EXPECT_THAT(Item(Item::string, std::string("foo")).GetIfString(),
+              Pointee(Eq("foo")));
+  EXPECT_THAT(Item(Item::string, kWithNull).GetIfString(),
+              Pointee(Eq(kWithNull)));
+
+  EXPECT_THAT(Item(Item::token, "hello").GetIfToken(), Pointee(Eq("hello")));
+  EXPECT_THAT(Item(Item::token, absl::string_view("world")).GetIfToken(),
+              Pointee(Eq("world")));
+  EXPECT_THAT(Item(Item::token, std::string("foo")).GetIfToken(),
+              Pointee(Eq("foo")));
+  EXPECT_THAT(Item(Item::token, kWithNull).GetIfToken(),
+              Pointee(Eq(kWithNull)));
+
+  EXPECT_THAT(Item(Item::byte_sequence, "hello").GetIfByteSequence(),
+              Pointee(Eq("hello")));
+  EXPECT_THAT(
+      Item(Item::byte_sequence, absl::string_view("world")).GetIfByteSequence(),
+      Pointee(Eq("world")));
+  EXPECT_THAT(Item(Item::byte_sequence, std::string("foo")).GetIfByteSequence(),
+              Pointee(Eq("foo")));
+  EXPECT_THAT(Item(Item::byte_sequence, kWithNull).GetIfByteSequence(),
+              Pointee(Eq(kWithNull)));
+}
+
 TEST(StructuredHeaderTest, ParameterizedMemberGetWithParams) {
   {
     // Ensure the getters do not crash on the inconsistent state produced by the
diff --git a/quiche/web_transport/web_transport_headers.cc b/quiche/web_transport/web_transport_headers.cc
index e96095b..d5a7931 100644
--- a/quiche/web_transport/web_transport_headers.cc
+++ b/quiche/web_transport/web_transport_headers.cc
@@ -100,7 +100,7 @@
   quiche::structured_headers::List list;
   list.reserve(subprotocols.size());
   for (const std::string& subprotocol : subprotocols) {
-    list.emplace_back(Item(subprotocol));
+    list.emplace_back(Item(Item::string, subprotocol));
   }
 
   std::optional<std::string> serialized =
@@ -123,7 +123,7 @@
 
 absl::StatusOr<std::string> SerializeSubprotocolResponseHeader(
     absl::string_view subprotocol) {
-  Item item(std::string(subprotocol), Item::kStringType);
+  Item item(Item::string, subprotocol);
   std::optional<std::string> serialized =
       quiche::structured_headers::SerializeItem(item);
   if (!serialized.has_value()) {