diff --git a/src/ObjectBase.cpp b/src/ObjectBase.cpp
index 75236aa..a59f93e 100644
--- a/src/ObjectBase.cpp
+++ b/src/ObjectBase.cpp
@@ -23,7 +23,6 @@
 namespace FSTR
 {
 const ObjectBase ObjectBase::empty_{ObjectBase::lengthInvalid};
-constexpr uint32_t ObjectBase::copyBit;
 
 bool ObjectBase::operator==(const ObjectBase& other) const
 {
@@ -62,25 +61,7 @@ size_t ObjectBase::read(size_t offset, void* buffer, size_t count) const
 
 const uint8_t* ObjectBase::data() const
 {
-	if(isNull()) {
-		// Return a pointer to a valid memory location
-		return reinterpret_cast<const uint8_t*>(&flashLength_);
-	}
-
-	auto ptr = this;
-
-	if(isCopy()) {
-		// Get real object
-		ptr = reinterpret_cast<const ObjectBase*>(flashLength_ & ~copyBit);
-	}
-
-	// Cannot yet differentiate memory addresses on Host
-#ifndef ARCH_HOST
-	// Check we've got a real flash pointer
-	assert(isFlashPtr(ptr));
-#endif
-
-	return reinterpret_cast<const uint8_t*>(&ptr->flashLength_ + 1);
+	return reinterpret_cast<const uint8_t*>(&flashLength_ + 1);
 }
 
 } // namespace FSTR
diff --git a/src/include/FlashString/Array.hpp b/src/include/FlashString/Array.hpp
index daf038e..2ed7ccf 100644
--- a/src/include/FlashString/Array.hpp
+++ b/src/include/FlashString/Array.hpp
@@ -54,7 +54,7 @@
  */
 #define DEFINE_FSTR_ARRAY_LOCAL(name, ElementType, ...)                                                                \
 	static DEFINE_FSTR_ARRAY_DATA(FSTR_DATA_NAME(name), ElementType, __VA_ARGS__);                                     \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF_NAMED(name, FSTR::Array<ElementType>);
+	static constexpr const FSTR::Array<ElementType>& name = FSTR_DATA_NAME(name).object;
 
 /**
  * @brief Define an Array data structure
@@ -73,8 +73,8 @@
  * @param ... List of ElementType items
  */
 #define DEFINE_FSTR_ARRAY_DATA_SIZED(name, ElementType, size, ...)                                                     \
-	FSTR_CONSTEXPR const struct {                                                                                      \
-		FSTR::ObjectBase object;                                                                                       \
+	constexpr const struct {                                                                                           \
+		FSTR::Array<ElementType> object;                                                                               \
 		ElementType data[size];                                                                                        \
 	} FSTR_PACKED FSTR_ALIGNED name PROGMEM = {{sizeof(ElementType) * size}, {__VA_ARGS__}};                           \
 	FSTR_CHECK_STRUCT(name);
@@ -140,7 +140,7 @@ template <typename ElementType> class Array : public Object<Array<ElementType>,
 	{
 		return printer().printTo(p);
 	}
-};
+} FSTR_PACKED;
 
 } // namespace FSTR
 
diff --git a/src/include/FlashString/Map.hpp b/src/include/FlashString/Map.hpp
index 3cd2756..27f6a94 100644
--- a/src/include/FlashString/Map.hpp
+++ b/src/include/FlashString/Map.hpp
@@ -58,7 +58,7 @@
  */
 #define DEFINE_FSTR_MAP_LOCAL(name, KeyType, ContentType, ...)                                                         \
 	static DEFINE_FSTR_MAP_DATA(FSTR_DATA_NAME(name), KeyType, ContentType, __VA_ARGS__);                              \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF_NAMED(name, DECL((FSTR::Map<KeyType, ContentType>)));
+	static constexpr const FSTR::Map<KeyType, ContentType>& name = FSTR_DATA_NAME(name).object;
 
 /**
  * @brief Define a Map Object with global reference, specifying the number of elements
@@ -77,7 +77,7 @@
  */
 #define DEFINE_FSTR_MAP_SIZED_LOCAL(name, KeyType, ContentType, size, ...)                                             \
 	static DEFINE_FSTR_MAP_DATA_SIZED(FSTR_DATA_NAME(name), KeyType, ContentType, size, __VA_ARGS__);                  \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF_NAMED(name, DECL((FSTR::Map<KeyType, ContentType>)));
+	static constexpr DEFINE_FSTR_REF_NAMED(name, DECL((FSTR::Map<KeyType, ContentType>)));
 
 /**
  * @brief Define a Map data structure
@@ -100,8 +100,8 @@
  * @param ... List of MapPair definitions { key, &content }
  */
 #define DEFINE_FSTR_MAP_DATA_SIZED(name, KeyType, ContentType, size, ...)                                              \
-	FSTR_CONSTEXPR const struct {                                                                                      \
-		FSTR::ObjectBase object;                                                                                       \
+	constexpr const struct {                                                                                           \
+		FSTR::Map<KeyType, ContentType> object;                                                                        \
 		FSTR::MapPair<KeyType, ContentType> data[size];                                                                \
 	} FSTR_PACKED FSTR_ALIGNED name PROGMEM = {{sizeof(FSTR::MapPair<KeyType, ContentType>) * size}, {__VA_ARGS__}};   \
 	FSTR_CHECK_STRUCT(name);
@@ -202,7 +202,7 @@ class Map : public Object<Map<KeyType, ContentType>, Pair>
 	{
 		return printer().printTo(p);
 	}
-};
+} FSTR_PACKED;
 
 } // namespace FSTR
 
diff --git a/src/include/FlashString/Object.hpp b/src/include/FlashString/Object.hpp
index 43c38b0..9f73827 100644
--- a/src/include/FlashString/Object.hpp
+++ b/src/include/FlashString/Object.hpp
@@ -79,18 +79,14 @@
  * We can only do this of course if the data structure is in scope.
  *
  */
-#define FSTR_PTR(objref) static_cast<std::remove_reference<decltype(objref)>::type*>(&FSTR_DATA_NAME(objref).object)
+#define FSTR_PTR(objref) (&FSTR_DATA_NAME(objref).object)
 
 /**
  * @brief Check structure is POD-compliant and correctly aligned
  */
-#ifdef __clang__
-#define FSTR_CHECK_STRUCT(name)
-#else
 #define FSTR_CHECK_STRUCT(name)                                                                                        \
-	static_assert(std::is_pod<decltype(name)>::value, "FSTR structure not POD");                                       \
+	static_assert(std::is_standard_layout<decltype(name)>::value, "FSTR structure not Standard Layout");               \
 	static_assert(offsetof(decltype(name), data) == sizeof(uint32_t), "FSTR structure alignment error");
-#endif
 
 /**
  * @brief Import an object from an external file with reference
@@ -110,8 +106,8 @@
  */
 #define IMPORT_FSTR_OBJECT_LOCAL(name, ObjectType, file)                                                               \
 	IMPORT_FSTR_DATA(FSTR_DATA_NAME(name), file)                                                                       \
-	extern "C" __attribute__((visibility("hidden"))) const FSTR::ObjectBase FSTR_DATA_NAME(name);                      \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF(name, ObjectType, FSTR_DATA_NAME(name));
+	extern "C" __attribute__((visibility("hidden"))) const ObjectType FSTR_DATA_NAME(name);                            \
+	static constexpr const ObjectType& name = FSTR_DATA_NAME(name);
 
 namespace FSTR
 {
@@ -127,34 +123,10 @@ template <class ObjectType, typename ElementType> class Object : public ObjectBa
 	using DataPtrType = const ElementType*;
 	using Iterator = ObjectIterator<ObjectType, ElementType>;
 
-	/**
-	 * @brief Creates a null object
-	 */
-	Object() : ObjectBase{lengthInvalid}
-	{
-#ifndef ARCH_HOST
-		// Illegal on real flash object
-		assert(!isFlashPtr(this));
-#endif
-	}
-
-	/**
-	 * @brief Copy constructor
-	 * @note Objects are usually passed around by reference or as a pointer,
-	 * but for ease of use we need a working copy constructor.
-	 * A copy contains a pointer to the real object.
-	 */
-	Object(const Object& obj) : ObjectBase{obj.isCopy() ? obj.flashLength_ : uint32_t(&obj) | copyBit}
-	{
-	}
-
-	~Object()
-	{
-	}
-
-	Object(const Object&& obj) = delete;
-	Object& operator=(const Object& other) = delete;
-	Object& operator=(const Object&& other) = delete;
+	Object(const Object&) = delete;
+	Object(const Object&&) = delete;
+	Object& operator=(const Object&) = delete;
+	Object& operator=(const Object&&) = delete;
 
 	Iterator begin() const
 	{
diff --git a/src/include/FlashString/ObjectBase.hpp b/src/include/FlashString/ObjectBase.hpp
index d96b8f6..7da5976 100644
--- a/src/include/FlashString/ObjectBase.hpp
+++ b/src/include/FlashString/ObjectBase.hpp
@@ -37,14 +37,7 @@ class ObjectBase
 	 */
 	FSTR_NOINLINE constexpr const size_t length() const
 	{
-		if(isNull()) {
-			return 0;
-		}
-		if(isCopy()) {
-			// NOLINTNEXTLINE
-			return reinterpret_cast<const ObjectBase*>(flashLength_ & ~copyBit)->length();
-		}
-		return flashLength_;
+		return flashLength_ & ~lengthInvalid;
 	}
 
 	/**
@@ -99,11 +92,6 @@ class ObjectBase
 	 */
 	size_t readFlash(size_t offset, void* buffer, size_t count) const;
 
-	FSTR_INLINE constexpr const bool isCopy() const
-	{
-		return (flashLength_ & copyBit) != 0;
-	}
-
 	/**
 	 * @brief Indicates an invalid String, used for return value from lookups, etc.
 	 * @note A real String can be zero-length, but it cannot be null
@@ -120,8 +108,7 @@ class ObjectBase
 
 protected:
 	static const ObjectBase empty_;
-	static constexpr uint32_t copyBit = 0x80000000U;	   ///< Set to indicate copy
-	static constexpr uint32_t lengthInvalid = copyBit | 0; ///< Indicates null string in a copy
+	static constexpr uint32_t lengthInvalid = 0x80000000U; ///< Indicates null string
 };
 
 } // namespace FSTR
diff --git a/src/include/FlashString/String.hpp b/src/include/FlashString/String.hpp
index 2e837fd..ea40703 100644
--- a/src/include/FlashString/String.hpp
+++ b/src/include/FlashString/String.hpp
@@ -42,8 +42,8 @@ typedef const __FlashStringHelper* flash_string_t;
  */
 #define FS_PTR(str)                                                                                                    \
 	(__extension__({                                                                                                   \
-		static DEFINE_FSTR_DATA(__fstr__, str);                                                                        \
-		static_cast<const FSTR::String*>(&__fstr__.object);                                                            \
+		static FSTR_VOLATILE DEFINE_FSTR_DATA(FSTR_DATA_NAME(tmp), str);                                               \
+		const_cast<const FSTR::String*>(&FSTR_DATA_NAME(tmp).object);                                                  \
 	}))
 
 /**
@@ -83,7 +83,7 @@ typedef const __FlashStringHelper* flash_string_t;
  */
 #define DEFINE_FSTR_LOCAL(name, str)                                                                                   \
 	static DEFINE_FSTR_DATA(FSTR_DATA_NAME(name), str);                                                                \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF_NAMED(name, FSTR::String);
+	static constexpr const FSTR::String& name = FSTR_DATA_NAME(name).object;
 
 /**
  * @brief Define a FSTR::String data structure
@@ -92,7 +92,7 @@ typedef const __FlashStringHelper* flash_string_t;
  */
 #define DEFINE_FSTR_DATA(name, str)                                                                                    \
 	constexpr const struct {                                                                                           \
-		FSTR::ObjectBase object;                                                                                       \
+		FSTR::String object;                                                                                           \
 		char data[ALIGNUP4(sizeof(str))];                                                                              \
 	} name PROGMEM = {{sizeof(str) - 1}, str};                                                                         \
 	FSTR_CHECK_STRUCT(name);
diff --git a/src/include/FlashString/Vector.hpp b/src/include/FlashString/Vector.hpp
index 7d4eff6..b22eccd 100644
--- a/src/include/FlashString/Vector.hpp
+++ b/src/include/FlashString/Vector.hpp
@@ -54,7 +54,7 @@
  */
 #define DEFINE_FSTR_VECTOR_LOCAL(name, ObjectType, ...)                                                                \
 	static DEFINE_FSTR_VECTOR_DATA(FSTR_DATA_NAME(name), ObjectType, __VA_ARGS__);                                     \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF_NAMED(name, FSTR::Vector<ObjectType>);
+	static constexpr const FSTR::Vector<ObjectType>& name = FSTR_DATA_NAME(name).object;
 
 /**
  * @brief Define a Vector Object with global reference, specifying the number of elements
@@ -73,7 +73,7 @@
  */
 #define DEFINE_FSTR_VECTOR_SIZED_LOCAL(name, ObjectType, size, ...)                                                    \
 	static DEFINE_FSTR_VECTOR_DATA_SIZED(FSTR_DATA_NAME(name), ObjectType, size, __VA_ARGS__);                         \
-	static FSTR_CONSTEXPR DEFINE_FSTR_REF_NAMED(name, FSTR::Vector<ObjectType>);
+	static constexpr DEFINE_FSTR_REF_NAMED(name, FSTR::Vector<ObjectType>);
 
 /**
  * @brief Define a Vector data structure
@@ -83,7 +83,7 @@
  * @note Size will be calculated
  */
 #define DEFINE_FSTR_VECTOR_DATA(name, ObjectType, ...)                                                                 \
-	DEFINE_FSTR_VECTOR_DATA_SIZED(name, ObjectType, FSTR_VA_NARGS(ObjectType*, __VA_ARGS__), __VA_ARGS__)
+	DEFINE_FSTR_VECTOR_DATA_SIZED(name, ObjectType, FSTR_VA_NARGS(void*, __VA_ARGS__), __VA_ARGS__)
 
 /**
  * @brief Define a Vector data structure and specify the number of elements
@@ -94,10 +94,10 @@
  * @note Use in situations where the array size cannot be automatically calculated
  */
 #define DEFINE_FSTR_VECTOR_DATA_SIZED(name, ObjectType, size, ...)                                                     \
-	FSTR_CONSTEXPR const struct {                                                                                      \
-		FSTR::ObjectBase object;                                                                                       \
+	constexpr const struct {                                                                                           \
+		FSTR::Vector<ObjectType> object;                                                                               \
 		const ObjectType* data[size];                                                                                  \
-	} name PROGMEM = {{sizeof(ObjectType*) * size}, {__VA_ARGS__}};                                                    \
+	} name PROGMEM = {{sizeof(void*) * size}, {__VA_ARGS__}};                                                          \
 	FSTR_CHECK_STRUCT(name);
 
 namespace FSTR
@@ -175,7 +175,7 @@ template <class ObjectType> class Vector : public Object<Vector<ObjectType>, con
 		auto ptr = dataptr[index];
 		return ptr ? *ptr : ObjectType::empty();
 	}
-};
+} FSTR_PACKED;
 
 } // namespace FSTR
 
diff --git a/src/include/FlashString/config.hpp b/src/include/FlashString/config.hpp
index a3bda82..4836abc 100644
--- a/src/include/FlashString/config.hpp
+++ b/src/include/FlashString/config.hpp
@@ -30,241 +30,15 @@
 #define FSTR_ALIGNED __attribute__((aligned(4)))
 #define FSTR_PACKED __attribute__((packed))
 
-// WARNING! Clang support intended only for `clang-tidy` diagnostics.
 #ifdef __clang__
-#define FSTR_CONSTEXPR
-// WARNING! This produces wrong value for, e.g. FSTR_VA_NARGS(a,b,c,)
-// PROVIDED ONLY FOR CLANG DIAGNOSTICS!
-#define FSTR_VA_NARGS_IMPL(                                                                                            \
-	_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24,     \
-	_25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, \
-	_48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, _65, _66, _67, _68, _69, _70, \
-	_71, _72, _73, _74, _75, _76, _77, _78, _79, _80, _81, _82, _83, _84, _85, _86, _87, _88, _89, _90, _91, _92, _93, \
-	_94, _95, _96, _97, _98, _99, _100, _101, _102, _103, _104, _105, _106, _107, _108, _109, _110, _111, _112, _113,  \
-	_114, _115, _116, _117, _118, _119, _120, _121, _122, _123, _124, _125, _126, _127, _128, _129, _130, _131, _132,  \
-	_133, _134, _135, _136, _137, _138, _139, _140, _141, _142, _143, _144, _145, _146, _147, _148, _149, _150, _151,  \
-	_152, _153, _154, _155, _156, _157, _158, _159, _160, _161, _162, _163, _164, _165, _166, _167, _168, _169, _170,  \
-	_171, _172, _173, _174, _175, _176, _177, _178, _179, _180, _181, _182, _183, _184, _185, _186, _187, _188, _189,  \
-	_190, _191, _192, _193, _194, _195, _196, _197, _198, _199, _200, _201, _202, _203, _204, _205, _206, _207, _208,  \
-	_209, _210, _211, _212, _213, _214, _215, _216, _217, _218, _219, _220, _221, _222, _223, _224, _225, _226, _227,  \
-	_228, _229, _230, _231, _232, _233, _234, _235, _236, _237, _238, _239, _240, _241, _242, _243, _244, _245, _246,  \
-	_247, _248, _249, _250, _251, _252, _253, _254, _255, _256, _257, _258, _259, _260, _261, _262, _263, _264, _265,  \
-	_266, _267, _268, _269, _270, _271, _272, _273, _274, _275, _276, _277, _278, _279, _280, _281, _282, _283, _284,  \
-	_285, _286, _287, _288, _289, _290, _291, _292, _293, _294, _295, _296, _297, _298, _299, _300, _301, _302, _303,  \
-	_304, _305, _306, _307, _308, _309, _310, _311, _312, _313, _314, _315, _316, _317, _318, _319, _320, _321, _322,  \
-	_323, _324, _325, _326, _327, _328, _329, _330, _331, _332, _333, _334, _335, _336, _337, _338, _339, _340, _341,  \
-	_342, _343, _344, _345, _346, _347, _348, _349, _350, _351, _352, _353, _354, _355, _356, _357, _358, _359, _360,  \
-	_361, _362, _363, _364, _365, _366, _367, _368, _369, _370, _371, _372, _373, _374, _375, _376, _377, _378, _379,  \
-	_380, _381, _382, _383, _384, _385, _386, _387, _388, _389, _390, _391, _392, _393, _394, _395, _396, _397, _398,  \
-	_399, _400, _401, _402, _403, _404, _405, _406, _407, _408, _409, _410, _411, _412, _413, _414, _415, _416, _417,  \
-	_418, _419, _420, _421, _422, _423, _424, _425, _426, _427, _428, _429, _430, _431, _432, _433, _434, _435, _436,  \
-	_437, _438, _439, _440, _441, _442, _443, _444, _445, _446, _447, _448, _449, _450, _451, _452, _453, _454, _455,  \
-	_456, _457, _458, _459, _460, _461, _462, _463, _464, _465, _466, _467, _468, _469, _470, _471, _472, _473, _474,  \
-	_475, _476, _477, _478, _479, _480, _481, _482, _483, _484, _485, _486, _487, _488, _489, _490, _491, _492, _493,  \
-	_494, _495, _496, _497, _498, _499, _500, _501, _502, _503, _504, _505, _506, _507, _508, _509, _510, _511, _512,  \
-	_513, _514, _515, _516, _517, _518, _519, _520, _521, _522, _523, _524, _525, _526, _527, _528, _529, _530, _531,  \
-	_532, _533, _534, _535, _536, _537, _538, _539, _540, _541, _542, _543, _544, _545, _546, _547, _548, _549, _550,  \
-	_551, _552, _553, _554, _555, _556, _557, _558, _559, _560, _561, _562, _563, _564, _565, _566, _567, _568, _569,  \
-	_570, _571, _572, _573, _574, _575, _576, _577, _578, _579, _580, _581, _582, _583, _584, _585, _586, _587, _588,  \
-	_589, _590, _591, _592, _593, _594, _595, _596, _597, _598, _599, _600, _601, _602, _603, _604, _605, _606, _607,  \
-	_608, _609, _610, _611, _612, _613, _614, _615, _616, _617, _618, _619, _620, _621, _622, _623, _624, _625, _626,  \
-	_627, _628, _629, _630, _631, _632, _633, _634, _635, _636, _637, _638, _639, _640, _641, _642, _643, _644, _645,  \
-	_646, _647, _648, _649, _650, _651, _652, _653, _654, _655, _656, _657, _658, _659, _660, _661, _662, _663, _664,  \
-	_665, _666, _667, _668, _669, _670, _671, _672, _673, _674, _675, _676, _677, _678, _679, _680, _681, _682, _683,  \
-	_684, _685, _686, _687, _688, _689, _690, _691, _692, _693, _694, _695, _696, _697, _698, _699, _700, _701, _702,  \
-	_703, _704, _705, _706, _707, _708, _709, _710, _711, _712, _713, _714, _715, _716, _717, _718, _719, _720, _721,  \
-	_722, _723, _724, _725, _726, _727, _728, _729, _730, _731, _732, _733, _734, _735, _736, _737, _738, _739, _740,  \
-	_741, _742, _743, _744, _745, _746, _747, _748, _749, _750, _751, _752, _753, _754, _755, _756, _757, _758, _759,  \
-	_760, _761, _762, _763, _764, _765, _766, _767, _768, _769, _770, _771, _772, _773, _774, _775, _776, _777, _778,  \
-	_779, _780, _781, _782, _783, _784, _785, _786, _787, _788, _789, _790, _791, _792, _793, _794, _795, _796, _797,  \
-	_798, _799, _800, _801, _802, _803, _804, _805, _806, _807, _808, _809, _810, _811, _812, _813, _814, _815, _816,  \
-	_817, _818, _819, _820, _821, _822, _823, _824, _825, _826, _827, _828, _829, _830, _831, _832, _833, _834, _835,  \
-	_836, _837, _838, _839, _840, _841, _842, _843, _844, _845, _846, _847, _848, _849, _850, _851, _852, _853, _854,  \
-	_855, _856, _857, _858, _859, _860, _861, _862, _863, _864, _865, _866, _867, _868, _869, _870, _871, _872, _873,  \
-	_874, _875, _876, _877, _878, _879, _880, _881, _882, _883, _884, _885, _886, _887, _888, _889, _890, _891, _892,  \
-	_893, _894, _895, _896, _897, _898, _899, _900, _901, _902, _903, _904, _905, _906, _907, _908, _909, _910, _911,  \
-	_912, _913, _914, _915, _916, _917, _918, _919, _920, _921, _922, _923, _924, _925, _926, _927, _928, _929, _930,  \
-	_931, _932, _933, _934, _935, _936, _937, _938, _939, _940, _941, _942, _943, _944, _945, _946, _947, _948, _949,  \
-	_950, _951, _952, _953, _954, _955, _956, _957, _958, _959, _960, _961, _962, _963, _964, _965, _966, _967, _968,  \
-	_969, _970, _971, _972, _973, _974, _975, _976, _977, _978, _979, _980, _981, _982, _983, _984, _985, _986, _987,  \
-	_988, _989, _990, _991, _992, _993, _994, _995, _996, _997, _998, _999, _1000, _1001, _1002, _1003, _1004, _1005,  \
-	_1006, _1007, _1008, _1009, _1010, _1011, _1012, _1013, _1014, _1015, _1016, _1017, _1018, _1019, _1020, _1021,    \
-	_1022, _1023, _1024, _1025, _1026, _1027, _1028, _1029, _1030, _1031, _1032, _1033, _1034, _1035, _1036, _1037,    \
-	_1038, _1039, _1040, _1041, _1042, _1043, _1044, _1045, _1046, _1047, _1048, _1049, _1050, _1051, _1052, _1053,    \
-	_1054, _1055, _1056, _1057, _1058, _1059, _1060, _1061, _1062, _1063, _1064, _1065, _1066, _1067, _1068, _1069,    \
-	_1070, _1071, _1072, _1073, _1074, _1075, _1076, _1077, _1078, _1079, _1080, _1081, _1082, _1083, _1084, _1085,    \
-	_1086, _1087, _1088, _1089, _1090, _1091, _1092, _1093, _1094, _1095, _1096, _1097, _1098, _1099, _1100, _1101,    \
-	_1102, _1103, _1104, _1105, _1106, _1107, _1108, _1109, _1110, _1111, _1112, _1113, _1114, _1115, _1116, _1117,    \
-	_1118, _1119, _1120, _1121, _1122, _1123, _1124, _1125, _1126, _1127, _1128, _1129, _1130, _1131, _1132, _1133,    \
-	_1134, _1135, _1136, _1137, _1138, _1139, _1140, _1141, _1142, _1143, _1144, _1145, _1146, _1147, _1148, _1149,    \
-	_1150, _1151, _1152, _1153, _1154, _1155, _1156, _1157, _1158, _1159, _1160, _1161, _1162, _1163, _1164, _1165,    \
-	_1166, _1167, _1168, _1169, _1170, _1171, _1172, _1173, _1174, _1175, _1176, _1177, _1178, _1179, _1180, _1181,    \
-	_1182, _1183, _1184, _1185, _1186, _1187, _1188, _1189, _1190, _1191, _1192, _1193, _1194, _1195, _1196, _1197,    \
-	_1198, _1199, _1200, _1201, _1202, _1203, _1204, _1205, _1206, _1207, _1208, _1209, _1210, _1211, _1212, _1213,    \
-	_1214, _1215, _1216, _1217, _1218, _1219, _1220, _1221, _1222, _1223, _1224, _1225, _1226, _1227, _1228, _1229,    \
-	_1230, _1231, _1232, _1233, _1234, _1235, _1236, _1237, _1238, _1239, _1240, _1241, _1242, _1243, _1244, _1245,    \
-	_1246, _1247, _1248, _1249, _1250, _1251, _1252, _1253, _1254, _1255, _1256, _1257, _1258, _1259, _1260, _1261,    \
-	_1262, _1263, _1264, _1265, _1266, _1267, _1268, _1269, _1270, _1271, _1272, _1273, _1274, _1275, _1276, _1277,    \
-	_1278, _1279, _1280, _1281, _1282, _1283, _1284, _1285, _1286, _1287, _1288, _1289, _1290, _1291, _1292, _1293,    \
-	_1294, _1295, _1296, _1297, _1298, _1299, _1300, _1301, _1302, _1303, _1304, _1305, _1306, _1307, _1308, _1309,    \
-	_1310, _1311, _1312, _1313, _1314, _1315, _1316, _1317, _1318, _1319, _1320, _1321, _1322, _1323, _1324, _1325,    \
-	_1326, _1327, _1328, _1329, _1330, _1331, _1332, _1333, _1334, _1335, _1336, _1337, _1338, _1339, _1340, _1341,    \
-	_1342, _1343, _1344, _1345, _1346, _1347, _1348, _1349, _1350, _1351, _1352, _1353, _1354, _1355, _1356, _1357,    \
-	_1358, _1359, _1360, _1361, _1362, _1363, _1364, _1365, _1366, _1367, _1368, _1369, _1370, _1371, _1372, _1373,    \
-	_1374, _1375, _1376, _1377, _1378, _1379, _1380, _1381, _1382, _1383, _1384, _1385, _1386, _1387, _1388, _1389,    \
-	_1390, _1391, _1392, _1393, _1394, _1395, _1396, _1397, _1398, _1399, _1400, _1401, _1402, _1403, _1404, _1405,    \
-	_1406, _1407, _1408, _1409, _1410, _1411, _1412, _1413, _1414, _1415, _1416, _1417, _1418, _1419, _1420, _1421,    \
-	_1422, _1423, _1424, _1425, _1426, _1427, _1428, _1429, _1430, _1431, _1432, _1433, _1434, _1435, _1436, _1437,    \
-	_1438, _1439, _1440, _1441, _1442, _1443, _1444, _1445, _1446, _1447, _1448, _1449, _1450, _1451, _1452, _1453,    \
-	_1454, _1455, _1456, _1457, _1458, _1459, _1460, _1461, _1462, _1463, _1464, _1465, _1466, _1467, _1468, _1469,    \
-	_1470, _1471, _1472, _1473, _1474, _1475, _1476, _1477, _1478, _1479, _1480, _1481, _1482, _1483, _1484, _1485,    \
-	_1486, _1487, _1488, _1489, _1490, _1491, _1492, _1493, _1494, _1495, _1496, _1497, _1498, _1499, _1500, _1501,    \
-	_1502, _1503, _1504, _1505, _1506, _1507, _1508, _1509, _1510, _1511, _1512, _1513, _1514, _1515, _1516, _1517,    \
-	_1518, _1519, _1520, _1521, _1522, _1523, _1524, _1525, _1526, _1527, _1528, _1529, _1530, _1531, _1532, _1533,    \
-	_1534, _1535, _1536, _1537, _1538, _1539, _1540, _1541, _1542, _1543, _1544, _1545, _1546, _1547, _1548, _1549,    \
-	_1550, _1551, _1552, _1553, _1554, _1555, _1556, _1557, _1558, _1559, _1560, _1561, _1562, _1563, _1564, _1565,    \
-	_1566, _1567, _1568, _1569, _1570, _1571, _1572, _1573, _1574, _1575, _1576, _1577, _1578, _1579, _1580, _1581,    \
-	_1582, _1583, _1584, _1585, _1586, _1587, _1588, _1589, _1590, _1591, _1592, _1593, _1594, _1595, _1596, _1597,    \
-	_1598, _1599, _1600, _1601, _1602, _1603, _1604, _1605, _1606, _1607, _1608, _1609, _1610, _1611, _1612, _1613,    \
-	_1614, _1615, _1616, _1617, _1618, _1619, _1620, _1621, _1622, _1623, _1624, _1625, _1626, _1627, _1628, _1629,    \
-	_1630, _1631, _1632, _1633, _1634, _1635, _1636, _1637, _1638, _1639, _1640, _1641, _1642, _1643, _1644, _1645,    \
-	_1646, _1647, _1648, _1649, _1650, _1651, _1652, _1653, _1654, _1655, _1656, _1657, _1658, _1659, _1660, _1661,    \
-	_1662, _1663, _1664, _1665, _1666, _1667, _1668, _1669, _1670, _1671, _1672, _1673, _1674, _1675, _1676, _1677,    \
-	_1678, _1679, _1680, _1681, _1682, _1683, _1684, _1685, _1686, _1687, _1688, _1689, _1690, _1691, _1692, _1693,    \
-	_1694, _1695, _1696, _1697, _1698, _1699, _1700, _1701, _1702, _1703, _1704, _1705, _1706, _1707, _1708, _1709,    \
-	_1710, _1711, _1712, _1713, _1714, _1715, _1716, _1717, _1718, _1719, _1720, _1721, _1722, _1723, _1724, _1725,    \
-	_1726, _1727, _1728, _1729, _1730, _1731, _1732, _1733, _1734, _1735, _1736, _1737, _1738, _1739, _1740, _1741,    \
-	_1742, _1743, _1744, _1745, _1746, _1747, _1748, _1749, _1750, _1751, _1752, _1753, _1754, _1755, _1756, _1757,    \
-	_1758, _1759, _1760, _1761, _1762, _1763, _1764, _1765, _1766, _1767, _1768, _1769, _1770, _1771, _1772, _1773,    \
-	_1774, _1775, _1776, _1777, _1778, _1779, _1780, _1781, _1782, _1783, _1784, _1785, _1786, _1787, _1788, _1789,    \
-	_1790, _1791, _1792, _1793, _1794, _1795, _1796, _1797, _1798, _1799, _1800, _1801, _1802, _1803, _1804, _1805,    \
-	_1806, _1807, _1808, _1809, _1810, _1811, _1812, _1813, _1814, _1815, _1816, _1817, _1818, _1819, _1820, _1821,    \
-	_1822, _1823, _1824, _1825, _1826, _1827, _1828, _1829, _1830, _1831, _1832, _1833, _1834, _1835, _1836, _1837,    \
-	_1838, _1839, _1840, _1841, _1842, _1843, _1844, _1845, _1846, _1847, _1848, _1849, _1850, _1851, _1852, _1853,    \
-	_1854, _1855, _1856, _1857, _1858, _1859, _1860, _1861, _1862, _1863, _1864, _1865, _1866, _1867, _1868, _1869,    \
-	_1870, _1871, _1872, _1873, _1874, _1875, _1876, _1877, _1878, _1879, _1880, _1881, _1882, _1883, _1884, _1885,    \
-	_1886, _1887, _1888, _1889, _1890, _1891, _1892, _1893, _1894, _1895, _1896, _1897, _1898, _1899, _1900, _1901,    \
-	_1902, _1903, _1904, _1905, _1906, _1907, _1908, _1909, _1910, _1911, _1912, _1913, _1914, _1915, _1916, _1917,    \
-	_1918, _1919, _1920, _1921, _1922, _1923, _1924, _1925, _1926, _1927, _1928, _1929, _1930, _1931, _1932, _1933,    \
-	_1934, _1935, _1936, _1937, _1938, _1939, _1940, _1941, _1942, _1943, _1944, _1945, _1946, _1947, _1948, _1949,    \
-	_1950, _1951, _1952, _1953, _1954, _1955, _1956, _1957, _1958, _1959, _1960, _1961, _1962, _1963, _1964, _1965,    \
-	_1966, _1967, _1968, _1969, _1970, _1971, _1972, _1973, _1974, _1975, _1976, _1977, _1978, _1979, _1980, _1981,    \
-	_1982, _1983, _1984, _1985, _1986, _1987, _1988, _1989, _1990, _1991, _1992, _1993, _1994, _1995, _1996, _1997,    \
-	_1998, _1999, _2000, _2001, _2002, _2003, _2004, _2005, _2006, _2007, _2008, _2009, _2010, _2011, _2012, _2013,    \
-	_2014, _2015, _2016, _2017, _2018, _2019, _2020, _2021, _2022, _2023, _2024, _2025, _2026, _2027, _2028, _2029,    \
-	_2030, _2031, _2032, _2033, _2034, _2035, _2036, _2037, _2038, _2039, _2040, _2041, _2042, _2043, _2044, _2045,    \
-	_2046, _2047, _2048, N, ...)                                                                                       \
-	N
-#define FSTR_VA_NARGS(...)                                                                                             \
-	FSTR_VA_NARGS_IMPL(                                                                                                \
-		__VA_ARGS__, 2048, 2047, 2046, 2045, 2044, 2043, 2042, 2041, 2040, 2039, 2038, 2037, 2036, 2035, 2034, 2033,   \
-		2032, 2031, 2030, 2029, 2028, 2027, 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015,    \
-		2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997,    \
-		1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979,    \
-		1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961,    \
-		1960, 1959, 1958, 1957, 1956, 1955, 1954, 1953, 1952, 1951, 1950, 1949, 1948, 1947, 1946, 1945, 1944, 1943,    \
-		1942, 1941, 1940, 1939, 1938, 1937, 1936, 1935, 1934, 1933, 1932, 1931, 1930, 1929, 1928, 1927, 1926, 1925,    \
-		1924, 1923, 1922, 1921, 1920, 1919, 1918, 1917, 1916, 1915, 1914, 1913, 1912, 1911, 1910, 1909, 1908, 1907,    \
-		1906, 1905, 1904, 1903, 1902, 1901, 1900, 1899, 1898, 1897, 1896, 1895, 1894, 1893, 1892, 1891, 1890, 1889,    \
-		1888, 1887, 1886, 1885, 1884, 1883, 1882, 1881, 1880, 1879, 1878, 1877, 1876, 1875, 1874, 1873, 1872, 1871,    \
-		1870, 1869, 1868, 1867, 1866, 1865, 1864, 1863, 1862, 1861, 1860, 1859, 1858, 1857, 1856, 1855, 1854, 1853,    \
-		1852, 1851, 1850, 1849, 1848, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 1840, 1839, 1838, 1837, 1836, 1835,    \
-		1834, 1833, 1832, 1831, 1830, 1829, 1828, 1827, 1826, 1825, 1824, 1823, 1822, 1821, 1820, 1819, 1818, 1817,    \
-		1816, 1815, 1814, 1813, 1812, 1811, 1810, 1809, 1808, 1807, 1806, 1805, 1804, 1803, 1802, 1801, 1800, 1799,    \
-		1798, 1797, 1796, 1795, 1794, 1793, 1792, 1791, 1790, 1789, 1788, 1787, 1786, 1785, 1784, 1783, 1782, 1781,    \
-		1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771, 1770, 1769, 1768, 1767, 1766, 1765, 1764, 1763,    \
-		1762, 1761, 1760, 1759, 1758, 1757, 1756, 1755, 1754, 1753, 1752, 1751, 1750, 1749, 1748, 1747, 1746, 1745,    \
-		1744, 1743, 1742, 1741, 1740, 1739, 1738, 1737, 1736, 1735, 1734, 1733, 1732, 1731, 1730, 1729, 1728, 1727,    \
-		1726, 1725, 1724, 1723, 1722, 1721, 1720, 1719, 1718, 1717, 1716, 1715, 1714, 1713, 1712, 1711, 1710, 1709,    \
-		1708, 1707, 1706, 1705, 1704, 1703, 1702, 1701, 1700, 1699, 1698, 1697, 1696, 1695, 1694, 1693, 1692, 1691,    \
-		1690, 1689, 1688, 1687, 1686, 1685, 1684, 1683, 1682, 1681, 1680, 1679, 1678, 1677, 1676, 1675, 1674, 1673,    \
-		1672, 1671, 1670, 1669, 1668, 1667, 1666, 1665, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656, 1655,    \
-		1654, 1653, 1652, 1651, 1650, 1649, 1648, 1647, 1646, 1645, 1644, 1643, 1642, 1641, 1640, 1639, 1638, 1637,    \
-		1636, 1635, 1634, 1633, 1632, 1631, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1619,    \
-		1618, 1617, 1616, 1615, 1614, 1613, 1612, 1611, 1610, 1609, 1608, 1607, 1606, 1605, 1604, 1603, 1602, 1601,    \
-		1600, 1599, 1598, 1597, 1596, 1595, 1594, 1593, 1592, 1591, 1590, 1589, 1588, 1587, 1586, 1585, 1584, 1583,    \
-		1582, 1581, 1580, 1579, 1578, 1577, 1576, 1575, 1574, 1573, 1572, 1571, 1570, 1569, 1568, 1567, 1566, 1565,    \
-		1564, 1563, 1562, 1561, 1560, 1559, 1558, 1557, 1556, 1555, 1554, 1553, 1552, 1551, 1550, 1549, 1548, 1547,    \
-		1546, 1545, 1544, 1543, 1542, 1541, 1540, 1539, 1538, 1537, 1536, 1535, 1534, 1533, 1532, 1531, 1530, 1529,    \
-		1528, 1527, 1526, 1525, 1524, 1523, 1522, 1521, 1520, 1519, 1518, 1517, 1516, 1515, 1514, 1513, 1512, 1511,    \
-		1510, 1509, 1508, 1507, 1506, 1505, 1504, 1503, 1502, 1501, 1500, 1499, 1498, 1497, 1496, 1495, 1494, 1493,    \
-		1492, 1491, 1490, 1489, 1488, 1487, 1486, 1485, 1484, 1483, 1482, 1481, 1480, 1479, 1478, 1477, 1476, 1475,    \
-		1474, 1473, 1472, 1471, 1470, 1469, 1468, 1467, 1466, 1465, 1464, 1463, 1462, 1461, 1460, 1459, 1458, 1457,    \
-		1456, 1455, 1454, 1453, 1452, 1451, 1450, 1449, 1448, 1447, 1446, 1445, 1444, 1443, 1442, 1441, 1440, 1439,    \
-		1438, 1437, 1436, 1435, 1434, 1433, 1432, 1431, 1430, 1429, 1428, 1427, 1426, 1425, 1424, 1423, 1422, 1421,    \
-		1420, 1419, 1418, 1417, 1416, 1415, 1414, 1413, 1412, 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404, 1403,    \
-		1402, 1401, 1400, 1399, 1398, 1397, 1396, 1395, 1394, 1393, 1392, 1391, 1390, 1389, 1388, 1387, 1386, 1385,    \
-		1384, 1383, 1382, 1381, 1380, 1379, 1378, 1377, 1376, 1375, 1374, 1373, 1372, 1371, 1370, 1369, 1368, 1367,    \
-		1366, 1365, 1364, 1363, 1362, 1361, 1360, 1359, 1358, 1357, 1356, 1355, 1354, 1353, 1352, 1351, 1350, 1349,    \
-		1348, 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340, 1339, 1338, 1337, 1336, 1335, 1334, 1333, 1332, 1331,    \
-		1330, 1329, 1328, 1327, 1326, 1325, 1324, 1323, 1322, 1321, 1320, 1319, 1318, 1317, 1316, 1315, 1314, 1313,    \
-		1312, 1311, 1310, 1309, 1308, 1307, 1306, 1305, 1304, 1303, 1302, 1301, 1300, 1299, 1298, 1297, 1296, 1295,    \
-		1294, 1293, 1292, 1291, 1290, 1289, 1288, 1287, 1286, 1285, 1284, 1283, 1282, 1281, 1280, 1279, 1278, 1277,    \
-		1276, 1275, 1274, 1273, 1272, 1271, 1270, 1269, 1268, 1267, 1266, 1265, 1264, 1263, 1262, 1261, 1260, 1259,    \
-		1258, 1257, 1256, 1255, 1254, 1253, 1252, 1251, 1250, 1249, 1248, 1247, 1246, 1245, 1244, 1243, 1242, 1241,    \
-		1240, 1239, 1238, 1237, 1236, 1235, 1234, 1233, 1232, 1231, 1230, 1229, 1228, 1227, 1226, 1225, 1224, 1223,    \
-		1222, 1221, 1220, 1219, 1218, 1217, 1216, 1215, 1214, 1213, 1212, 1211, 1210, 1209, 1208, 1207, 1206, 1205,    \
-		1204, 1203, 1202, 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193, 1192, 1191, 1190, 1189, 1188, 1187,    \
-		1186, 1185, 1184, 1183, 1182, 1181, 1180, 1179, 1178, 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170, 1169,    \
-		1168, 1167, 1166, 1165, 1164, 1163, 1162, 1161, 1160, 1159, 1158, 1157, 1156, 1155, 1154, 1153, 1152, 1151,    \
-		1150, 1149, 1148, 1147, 1146, 1145, 1144, 1143, 1142, 1141, 1140, 1139, 1138, 1137, 1136, 1135, 1134, 1133,    \
-		1132, 1131, 1130, 1129, 1128, 1127, 1126, 1125, 1124, 1123, 1122, 1121, 1120, 1119, 1118, 1117, 1116, 1115,    \
-		1114, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1106, 1105, 1104, 1103, 1102, 1101, 1100, 1099, 1098, 1097,    \
-		1096, 1095, 1094, 1093, 1092, 1091, 1090, 1089, 1088, 1087, 1086, 1085, 1084, 1083, 1082, 1081, 1080, 1079,    \
-		1078, 1077, 1076, 1075, 1074, 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 1064, 1063, 1062, 1061,    \
-		1060, 1059, 1058, 1057, 1056, 1055, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 1044, 1043,    \
-		1042, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 1033, 1032, 1031, 1030, 1029, 1028, 1027, 1026, 1025,    \
-		1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012, 1011, 1010, 1009, 1008, 1007,    \
-		1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 988, 987,     \
-		986, 985, 984, 983, 982, 981, 980, 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965,  \
-		964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943,  \
-		942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921,  \
-		920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 902, 901, 900, 899,  \
-		898, 897, 896, 895, 894, 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, 877,  \
-		876, 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857, 856, 855,  \
-		854, 853, 852, 851, 850, 849, 848, 847, 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833,  \
-		832, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, 813, 812, 811,  \
-		810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789,  \
-		788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 768, 767,  \
-		766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, 746, 745,  \
-		744, 743, 742, 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723,  \
-		722, 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 701,  \
-		700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679,  \
-		678, 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657,  \
-		656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635,  \
-		634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613,  \
-		612, 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, 591,  \
-		590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, 569,  \
-		568, 567, 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547,  \
-		546, 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525,  \
-		524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503,  \
-		502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481,  \
-		480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459,  \
-		458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437,  \
-		436, 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 415,  \
-		414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, 394, 393,  \
-		392, 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371,  \
-		370, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, 349,  \
-		348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327,  \
-		326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305,  \
-		304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, 283,  \
-		282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261,  \
-		260, 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239,  \
-		238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217,  \
-		216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195,  \
-		194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173,  \
-		172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151,  \
-		150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129,  \
-		128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107,  \
-		106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, \
-		80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54,    \
-		53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27,    \
-		26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
+// Clang has a habit of throwing stuff away we want
+#define FSTR_VOLATILE volatile
 #else
-#define FSTR_CONSTEXPR constexpr
-#define FSTR_VA_NARGS(type_, ...) (sizeof((const type_[]){__VA_ARGS__}) / sizeof(type_))
+#define FSTR_VOLATILE
 #endif
 
+#define FSTR_VA_NARGS(type_, ...) (sizeof((const type_[]){__VA_ARGS__}) / sizeof(type_))
+
 #ifndef ALIGNUP4
 /**
  * @brief Align a size up to the nearest word boundary
diff --git a/test/app/speed.cpp b/test/app/speed.cpp
index 762d8c6..571634e 100644
--- a/test/app/speed.cpp
+++ b/test/app/speed.cpp
@@ -43,6 +43,13 @@ class SpeedTest : public TestGroup
 		}
 	}
 
+	template <typename T> static void __noinline profile_iterator(const FSTR::Vector<T>& object)
+	{
+		for(auto& value : object) {
+			sum(value);
+		}
+	}
+
 	template <typename T, typename U> static void __noinline profile_indexOf(const T& object, const U& value)
 	{
 		total += object.indexOf(value);
diff --git a/test/app/string.cpp b/test/app/string.cpp
index 9199a8b..1637869 100644
--- a/test/app/string.cpp
+++ b/test/app/string.cpp
@@ -40,26 +40,13 @@ class StringTest : public TestGroup
 
 	void execute() override
 	{
-		FSTR::String empty;
+		auto& empty = FSTR::String::empty();
 
 		TEST_CASE("empty")
 		{
-			REQUIRE(empty.isCopy() == true);
+			REQUIRE(empty.isNull());
 			REQUIRE(empty == "");
-		}
-
-		TEST_CASE("empty copy")
-		{
-			auto copy = empty;
-			REQUIRE(copy.isCopy() == true);
-			REQUIRE(copy == "");
-		}
-
-		TEST_CASE("normal copy")
-		{
-			auto copy = externalFSTR1;
-			REQUIRE(copy.isCopy() == true);
-			REQUIRE(copy == F(EXTERNAL_FSTR1_TEXT));
+			REQUIRE(empty.length() == 0);
 		}
 
 		TEST_CASE("Assign to WString")
@@ -68,14 +55,13 @@ class StringTest : public TestGroup
 			REQUIRE(!s);
 			s = externalFSTR1;
 			REQUIRE(s == externalFSTR1);
-			auto copy = externalFSTR1;
-			REQUIRE(s == copy);
 		}
 
 		TEST_CASE("inline")
 		{
 #define INLINE_TEXT "This is an inline\0 Flash String\0\0"
 			auto& str = FS(INLINE_TEXT);
+			Serial << str << endl;
 			REQUIRE(str == F(INLINE_TEXT));
 		}