scripts: Make safe_structs call pnext handlers

Safe structs will now make deep copies of the attendant pnext chain.

Change-Id: I34d6dfed9ce8222c197b83448ad7ee420b55df8c
diff --git a/layers/generated/vk_safe_struct.cpp b/layers/generated/vk_safe_struct.cpp
index 4b6a59d..0fb721c 100644
--- a/layers/generated/vk_safe_struct.cpp
+++ b/layers/generated/vk_safe_struct.cpp
@@ -37,13 +37,13 @@
 
 safe_VkApplicationInfo::safe_VkApplicationInfo(const VkApplicationInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pApplicationName(in_struct->pApplicationName),
     applicationVersion(in_struct->applicationVersion),
     pEngineName(in_struct->pEngineName),
     engineVersion(in_struct->engineVersion),
     apiVersion(in_struct->apiVersion)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkApplicationInfo::safe_VkApplicationInfo()
@@ -52,65 +52,69 @@
 safe_VkApplicationInfo::safe_VkApplicationInfo(const safe_VkApplicationInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pApplicationName = src.pApplicationName;
     applicationVersion = src.applicationVersion;
     pEngineName = src.pEngineName;
     engineVersion = src.engineVersion;
     apiVersion = src.apiVersion;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkApplicationInfo& safe_VkApplicationInfo::operator=(const safe_VkApplicationInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pApplicationName = src.pApplicationName;
     applicationVersion = src.applicationVersion;
     pEngineName = src.pEngineName;
     engineVersion = src.engineVersion;
     apiVersion = src.apiVersion;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkApplicationInfo::~safe_VkApplicationInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkApplicationInfo::initialize(const VkApplicationInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pApplicationName = in_struct->pApplicationName;
     applicationVersion = in_struct->applicationVersion;
     pEngineName = in_struct->pEngineName;
     engineVersion = in_struct->engineVersion;
     apiVersion = in_struct->apiVersion;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkApplicationInfo::initialize(const safe_VkApplicationInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pApplicationName = src->pApplicationName;
     applicationVersion = src->applicationVersion;
     pEngineName = src->pEngineName;
     engineVersion = src->engineVersion;
     apiVersion = src->apiVersion;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkInstanceCreateInfo::safe_VkInstanceCreateInfo(const VkInstanceCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     enabledLayerCount(in_struct->enabledLayerCount),
     ppEnabledLayerNames(in_struct->ppEnabledLayerNames),
     enabledExtensionCount(in_struct->enabledExtensionCount),
     ppEnabledExtensionNames(in_struct->ppEnabledExtensionNames)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pApplicationInfo)
         pApplicationInfo = new safe_VkApplicationInfo(in_struct->pApplicationInfo);
     else
@@ -123,12 +127,12 @@
 safe_VkInstanceCreateInfo::safe_VkInstanceCreateInfo(const safe_VkInstanceCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     enabledLayerCount = src.enabledLayerCount;
     ppEnabledLayerNames = src.ppEnabledLayerNames;
     enabledExtensionCount = src.enabledExtensionCount;
     ppEnabledExtensionNames = src.ppEnabledExtensionNames;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pApplicationInfo)
         pApplicationInfo = new safe_VkApplicationInfo(*src.pApplicationInfo);
     else
@@ -141,14 +145,16 @@
 
     if (pApplicationInfo)
         delete pApplicationInfo;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     enabledLayerCount = src.enabledLayerCount;
     ppEnabledLayerNames = src.ppEnabledLayerNames;
     enabledExtensionCount = src.enabledExtensionCount;
     ppEnabledExtensionNames = src.ppEnabledExtensionNames;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pApplicationInfo)
         pApplicationInfo = new safe_VkApplicationInfo(*src.pApplicationInfo);
     else
@@ -161,17 +167,19 @@
 {
     if (pApplicationInfo)
         delete pApplicationInfo;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkInstanceCreateInfo::initialize(const VkInstanceCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     enabledLayerCount = in_struct->enabledLayerCount;
     ppEnabledLayerNames = in_struct->ppEnabledLayerNames;
     enabledExtensionCount = in_struct->enabledExtensionCount;
     ppEnabledExtensionNames = in_struct->ppEnabledExtensionNames;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pApplicationInfo)
         pApplicationInfo = new safe_VkApplicationInfo(in_struct->pApplicationInfo);
     else
@@ -181,12 +189,12 @@
 void safe_VkInstanceCreateInfo::initialize(const safe_VkInstanceCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     enabledLayerCount = src->enabledLayerCount;
     ppEnabledLayerNames = src->ppEnabledLayerNames;
     enabledExtensionCount = src->enabledExtensionCount;
     ppEnabledExtensionNames = src->ppEnabledExtensionNames;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pApplicationInfo)
         pApplicationInfo = new safe_VkApplicationInfo(*src->pApplicationInfo);
     else
@@ -257,12 +265,12 @@
 
 safe_VkDeviceQueueCreateInfo::safe_VkDeviceQueueCreateInfo(const VkDeviceQueueCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     queueFamilyIndex(in_struct->queueFamilyIndex),
     queueCount(in_struct->queueCount),
     pQueuePriorities(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueuePriorities) {
         pQueuePriorities = new float[in_struct->queueCount];
         memcpy ((void *)pQueuePriorities, (void *)in_struct->pQueuePriorities, sizeof(float)*in_struct->queueCount);
@@ -276,11 +284,11 @@
 safe_VkDeviceQueueCreateInfo::safe_VkDeviceQueueCreateInfo(const safe_VkDeviceQueueCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueFamilyIndex = src.queueFamilyIndex;
     queueCount = src.queueCount;
     pQueuePriorities = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueuePriorities) {
         pQueuePriorities = new float[src.queueCount];
         memcpy ((void *)pQueuePriorities, (void *)src.pQueuePriorities, sizeof(float)*src.queueCount);
@@ -293,13 +301,15 @@
 
     if (pQueuePriorities)
         delete[] pQueuePriorities;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueFamilyIndex = src.queueFamilyIndex;
     queueCount = src.queueCount;
     pQueuePriorities = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueuePriorities) {
         pQueuePriorities = new float[src.queueCount];
         memcpy ((void *)pQueuePriorities, (void *)src.pQueuePriorities, sizeof(float)*src.queueCount);
@@ -312,16 +322,18 @@
 {
     if (pQueuePriorities)
         delete[] pQueuePriorities;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceQueueCreateInfo::initialize(const VkDeviceQueueCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     queueFamilyIndex = in_struct->queueFamilyIndex;
     queueCount = in_struct->queueCount;
     pQueuePriorities = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueuePriorities) {
         pQueuePriorities = new float[in_struct->queueCount];
         memcpy ((void *)pQueuePriorities, (void *)in_struct->pQueuePriorities, sizeof(float)*in_struct->queueCount);
@@ -331,11 +343,11 @@
 void safe_VkDeviceQueueCreateInfo::initialize(const safe_VkDeviceQueueCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     queueFamilyIndex = src->queueFamilyIndex;
     queueCount = src->queueCount;
     pQueuePriorities = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pQueuePriorities) {
         pQueuePriorities = new float[src->queueCount];
         memcpy ((void *)pQueuePriorities, (void *)src->pQueuePriorities, sizeof(float)*src->queueCount);
@@ -344,7 +356,6 @@
 
 safe_VkDeviceCreateInfo::safe_VkDeviceCreateInfo(const VkDeviceCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     queueCreateInfoCount(in_struct->queueCreateInfoCount),
     pQueueCreateInfos(nullptr),
@@ -354,6 +365,7 @@
     ppEnabledExtensionNames(in_struct->ppEnabledExtensionNames),
     pEnabledFeatures(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (queueCreateInfoCount && in_struct->pQueueCreateInfos) {
         pQueueCreateInfos = new safe_VkDeviceQueueCreateInfo[queueCreateInfoCount];
         for (uint32_t i=0; i<queueCreateInfoCount; ++i) {
@@ -373,7 +385,6 @@
 safe_VkDeviceCreateInfo::safe_VkDeviceCreateInfo(const safe_VkDeviceCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueCreateInfoCount = src.queueCreateInfoCount;
     pQueueCreateInfos = nullptr;
@@ -382,6 +393,7 @@
     enabledExtensionCount = src.enabledExtensionCount;
     ppEnabledExtensionNames = src.ppEnabledExtensionNames;
     pEnabledFeatures = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (queueCreateInfoCount && src.pQueueCreateInfos) {
         pQueueCreateInfos = new safe_VkDeviceQueueCreateInfo[queueCreateInfoCount];
         for (uint32_t i=0; i<queueCreateInfoCount; ++i) {
@@ -401,9 +413,10 @@
         delete[] pQueueCreateInfos;
     if (pEnabledFeatures)
         delete pEnabledFeatures;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueCreateInfoCount = src.queueCreateInfoCount;
     pQueueCreateInfos = nullptr;
@@ -412,6 +425,7 @@
     enabledExtensionCount = src.enabledExtensionCount;
     ppEnabledExtensionNames = src.ppEnabledExtensionNames;
     pEnabledFeatures = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (queueCreateInfoCount && src.pQueueCreateInfos) {
         pQueueCreateInfos = new safe_VkDeviceQueueCreateInfo[queueCreateInfoCount];
         for (uint32_t i=0; i<queueCreateInfoCount; ++i) {
@@ -431,12 +445,13 @@
         delete[] pQueueCreateInfos;
     if (pEnabledFeatures)
         delete pEnabledFeatures;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceCreateInfo::initialize(const VkDeviceCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     queueCreateInfoCount = in_struct->queueCreateInfoCount;
     pQueueCreateInfos = nullptr;
@@ -445,6 +460,7 @@
     enabledExtensionCount = in_struct->enabledExtensionCount;
     ppEnabledExtensionNames = in_struct->ppEnabledExtensionNames;
     pEnabledFeatures = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (queueCreateInfoCount && in_struct->pQueueCreateInfos) {
         pQueueCreateInfos = new safe_VkDeviceQueueCreateInfo[queueCreateInfoCount];
         for (uint32_t i=0; i<queueCreateInfoCount; ++i) {
@@ -459,7 +475,6 @@
 void safe_VkDeviceCreateInfo::initialize(const safe_VkDeviceCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     queueCreateInfoCount = src->queueCreateInfoCount;
     pQueueCreateInfos = nullptr;
@@ -468,6 +483,7 @@
     enabledExtensionCount = src->enabledExtensionCount;
     ppEnabledExtensionNames = src->ppEnabledExtensionNames;
     pEnabledFeatures = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (queueCreateInfoCount && src->pQueueCreateInfos) {
         pQueueCreateInfos = new safe_VkDeviceQueueCreateInfo[queueCreateInfoCount];
         for (uint32_t i=0; i<queueCreateInfoCount; ++i) {
@@ -481,7 +497,6 @@
 
 safe_VkSubmitInfo::safe_VkSubmitInfo(const VkSubmitInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     waitSemaphoreCount(in_struct->waitSemaphoreCount),
     pWaitSemaphores(nullptr),
     pWaitDstStageMask(nullptr),
@@ -490,6 +505,7 @@
     signalSemaphoreCount(in_struct->signalSemaphoreCount),
     pSignalSemaphores(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (waitSemaphoreCount && in_struct->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -522,7 +538,6 @@
 safe_VkSubmitInfo::safe_VkSubmitInfo(const safe_VkSubmitInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     pWaitDstStageMask = nullptr;
@@ -530,6 +545,7 @@
     pCommandBuffers = nullptr;
     signalSemaphoreCount = src.signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (waitSemaphoreCount && src.pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -564,9 +580,10 @@
         delete[] pCommandBuffers;
     if (pSignalSemaphores)
         delete[] pSignalSemaphores;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     pWaitDstStageMask = nullptr;
@@ -574,6 +591,7 @@
     pCommandBuffers = nullptr;
     signalSemaphoreCount = src.signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (waitSemaphoreCount && src.pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -608,12 +626,13 @@
         delete[] pCommandBuffers;
     if (pSignalSemaphores)
         delete[] pSignalSemaphores;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSubmitInfo::initialize(const VkSubmitInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     waitSemaphoreCount = in_struct->waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     pWaitDstStageMask = nullptr;
@@ -621,6 +640,7 @@
     pCommandBuffers = nullptr;
     signalSemaphoreCount = in_struct->signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (waitSemaphoreCount && in_struct->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -646,7 +666,6 @@
 void safe_VkSubmitInfo::initialize(const safe_VkSubmitInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     waitSemaphoreCount = src->waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     pWaitDstStageMask = nullptr;
@@ -654,6 +673,7 @@
     pCommandBuffers = nullptr;
     signalSemaphoreCount = src->signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (waitSemaphoreCount && src->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -678,10 +698,10 @@
 
 safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo(const VkMemoryAllocateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     allocationSize(in_struct->allocationSize),
     memoryTypeIndex(in_struct->memoryTypeIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo()
@@ -690,51 +710,55 @@
 safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo(const safe_VkMemoryAllocateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     allocationSize = src.allocationSize;
     memoryTypeIndex = src.memoryTypeIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryAllocateInfo& safe_VkMemoryAllocateInfo::operator=(const safe_VkMemoryAllocateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     allocationSize = src.allocationSize;
     memoryTypeIndex = src.memoryTypeIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryAllocateInfo::~safe_VkMemoryAllocateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryAllocateInfo::initialize(const VkMemoryAllocateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     allocationSize = in_struct->allocationSize;
     memoryTypeIndex = in_struct->memoryTypeIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryAllocateInfo::initialize(const safe_VkMemoryAllocateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     allocationSize = src->allocationSize;
     memoryTypeIndex = src->memoryTypeIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMappedMemoryRange::safe_VkMappedMemoryRange(const VkMappedMemoryRange* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memory(in_struct->memory),
     offset(in_struct->offset),
     size(in_struct->size)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMappedMemoryRange::safe_VkMappedMemoryRange()
@@ -743,46 +767,50 @@
 safe_VkMappedMemoryRange::safe_VkMappedMemoryRange(const safe_VkMappedMemoryRange& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
     offset = src.offset;
     size = src.size;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMappedMemoryRange& safe_VkMappedMemoryRange::operator=(const safe_VkMappedMemoryRange& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
     offset = src.offset;
     size = src.size;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMappedMemoryRange::~safe_VkMappedMemoryRange()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMappedMemoryRange::initialize(const VkMappedMemoryRange* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memory = in_struct->memory;
     offset = in_struct->offset;
     size = in_struct->size;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMappedMemoryRange::initialize(const safe_VkMappedMemoryRange* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memory = src->memory;
     offset = src->offset;
     size = src->size;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSparseBufferMemoryBindInfo::safe_VkSparseBufferMemoryBindInfo(const VkSparseBufferMemoryBindInfo* in_struct) :
@@ -1033,7 +1061,6 @@
 
 safe_VkBindSparseInfo::safe_VkBindSparseInfo(const VkBindSparseInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     waitSemaphoreCount(in_struct->waitSemaphoreCount),
     pWaitSemaphores(nullptr),
     bufferBindCount(in_struct->bufferBindCount),
@@ -1045,6 +1072,7 @@
     signalSemaphoreCount(in_struct->signalSemaphoreCount),
     pSignalSemaphores(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (waitSemaphoreCount && in_struct->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -1088,7 +1116,6 @@
 safe_VkBindSparseInfo::safe_VkBindSparseInfo(const safe_VkBindSparseInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     bufferBindCount = src.bufferBindCount;
@@ -1099,6 +1126,7 @@
     pImageBinds = nullptr;
     signalSemaphoreCount = src.signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (waitSemaphoreCount && src.pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -1145,9 +1173,10 @@
         delete[] pImageBinds;
     if (pSignalSemaphores)
         delete[] pSignalSemaphores;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     bufferBindCount = src.bufferBindCount;
@@ -1158,6 +1187,7 @@
     pImageBinds = nullptr;
     signalSemaphoreCount = src.signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (waitSemaphoreCount && src.pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -1204,12 +1234,13 @@
         delete[] pImageBinds;
     if (pSignalSemaphores)
         delete[] pSignalSemaphores;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindSparseInfo::initialize(const VkBindSparseInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     waitSemaphoreCount = in_struct->waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     bufferBindCount = in_struct->bufferBindCount;
@@ -1220,6 +1251,7 @@
     pImageBinds = nullptr;
     signalSemaphoreCount = in_struct->signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (waitSemaphoreCount && in_struct->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -1255,7 +1287,6 @@
 void safe_VkBindSparseInfo::initialize(const safe_VkBindSparseInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     waitSemaphoreCount = src->waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     bufferBindCount = src->bufferBindCount;
@@ -1266,6 +1297,7 @@
     pImageBinds = nullptr;
     signalSemaphoreCount = src->signalSemaphoreCount;
     pSignalSemaphores = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (waitSemaphoreCount && src->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -1300,9 +1332,9 @@
 
 safe_VkFenceCreateInfo::safe_VkFenceCreateInfo(const VkFenceCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkFenceCreateInfo::safe_VkFenceCreateInfo()
@@ -1311,45 +1343,49 @@
 safe_VkFenceCreateInfo::safe_VkFenceCreateInfo(const safe_VkFenceCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkFenceCreateInfo& safe_VkFenceCreateInfo::operator=(const safe_VkFenceCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkFenceCreateInfo::~safe_VkFenceCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFenceCreateInfo::initialize(const VkFenceCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkFenceCreateInfo::initialize(const safe_VkFenceCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSemaphoreCreateInfo::safe_VkSemaphoreCreateInfo(const VkSemaphoreCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSemaphoreCreateInfo::safe_VkSemaphoreCreateInfo()
@@ -1358,45 +1394,49 @@
 safe_VkSemaphoreCreateInfo::safe_VkSemaphoreCreateInfo(const safe_VkSemaphoreCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSemaphoreCreateInfo& safe_VkSemaphoreCreateInfo::operator=(const safe_VkSemaphoreCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSemaphoreCreateInfo::~safe_VkSemaphoreCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSemaphoreCreateInfo::initialize(const VkSemaphoreCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSemaphoreCreateInfo::initialize(const safe_VkSemaphoreCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkEventCreateInfo::safe_VkEventCreateInfo(const VkEventCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkEventCreateInfo::safe_VkEventCreateInfo()
@@ -1405,48 +1445,52 @@
 safe_VkEventCreateInfo::safe_VkEventCreateInfo(const safe_VkEventCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkEventCreateInfo& safe_VkEventCreateInfo::operator=(const safe_VkEventCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkEventCreateInfo::~safe_VkEventCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkEventCreateInfo::initialize(const VkEventCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkEventCreateInfo::initialize(const safe_VkEventCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkQueryPoolCreateInfo::safe_VkQueryPoolCreateInfo(const VkQueryPoolCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     queryType(in_struct->queryType),
     queryCount(in_struct->queryCount),
     pipelineStatistics(in_struct->pipelineStatistics)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkQueryPoolCreateInfo::safe_VkQueryPoolCreateInfo()
@@ -1455,55 +1499,58 @@
 safe_VkQueryPoolCreateInfo::safe_VkQueryPoolCreateInfo(const safe_VkQueryPoolCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queryType = src.queryType;
     queryCount = src.queryCount;
     pipelineStatistics = src.pipelineStatistics;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkQueryPoolCreateInfo& safe_VkQueryPoolCreateInfo::operator=(const safe_VkQueryPoolCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queryType = src.queryType;
     queryCount = src.queryCount;
     pipelineStatistics = src.pipelineStatistics;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkQueryPoolCreateInfo::~safe_VkQueryPoolCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkQueryPoolCreateInfo::initialize(const VkQueryPoolCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     queryType = in_struct->queryType;
     queryCount = in_struct->queryCount;
     pipelineStatistics = in_struct->pipelineStatistics;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkQueryPoolCreateInfo::initialize(const safe_VkQueryPoolCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     queryType = src->queryType;
     queryCount = src->queryCount;
     pipelineStatistics = src->pipelineStatistics;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBufferCreateInfo::safe_VkBufferCreateInfo(const VkBufferCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     size(in_struct->size),
     usage(in_struct->usage),
@@ -1511,6 +1558,7 @@
     queueFamilyIndexCount(in_struct->queueFamilyIndexCount),
     pQueueFamilyIndices(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -1524,13 +1572,13 @@
 safe_VkBufferCreateInfo::safe_VkBufferCreateInfo(const safe_VkBufferCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     size = src.size;
     usage = src.usage;
     sharingMode = src.sharingMode;
     queueFamilyIndexCount = src.queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -1543,15 +1591,17 @@
 
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     size = src.size;
     usage = src.usage;
     sharingMode = src.sharingMode;
     queueFamilyIndexCount = src.queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -1564,18 +1614,20 @@
 {
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBufferCreateInfo::initialize(const VkBufferCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     size = in_struct->size;
     usage = in_struct->usage;
     sharingMode = in_struct->sharingMode;
     queueFamilyIndexCount = in_struct->queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -1585,13 +1637,13 @@
 void safe_VkBufferCreateInfo::initialize(const safe_VkBufferCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     size = src->size;
     usage = src->usage;
     sharingMode = src->sharingMode;
     queueFamilyIndexCount = src->queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src->pQueueFamilyIndices, sizeof(uint32_t)*src->queueFamilyIndexCount);
@@ -1600,13 +1652,13 @@
 
 safe_VkBufferViewCreateInfo::safe_VkBufferViewCreateInfo(const VkBufferViewCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     buffer(in_struct->buffer),
     format(in_struct->format),
     offset(in_struct->offset),
     range(in_struct->range)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBufferViewCreateInfo::safe_VkBufferViewCreateInfo()
@@ -1615,59 +1667,62 @@
 safe_VkBufferViewCreateInfo::safe_VkBufferViewCreateInfo(const safe_VkBufferViewCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     buffer = src.buffer;
     format = src.format;
     offset = src.offset;
     range = src.range;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBufferViewCreateInfo& safe_VkBufferViewCreateInfo::operator=(const safe_VkBufferViewCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     buffer = src.buffer;
     format = src.format;
     offset = src.offset;
     range = src.range;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBufferViewCreateInfo::~safe_VkBufferViewCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBufferViewCreateInfo::initialize(const VkBufferViewCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     buffer = in_struct->buffer;
     format = in_struct->format;
     offset = in_struct->offset;
     range = in_struct->range;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBufferViewCreateInfo::initialize(const safe_VkBufferViewCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     buffer = src->buffer;
     format = src->format;
     offset = src->offset;
     range = src->range;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageCreateInfo::safe_VkImageCreateInfo(const VkImageCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     imageType(in_struct->imageType),
     format(in_struct->format),
@@ -1682,6 +1737,7 @@
     pQueueFamilyIndices(nullptr),
     initialLayout(in_struct->initialLayout)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -1695,7 +1751,6 @@
 safe_VkImageCreateInfo::safe_VkImageCreateInfo(const safe_VkImageCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     imageType = src.imageType;
     format = src.format;
@@ -1709,6 +1764,7 @@
     queueFamilyIndexCount = src.queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
     initialLayout = src.initialLayout;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -1721,9 +1777,10 @@
 
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     imageType = src.imageType;
     format = src.format;
@@ -1737,6 +1794,7 @@
     queueFamilyIndexCount = src.queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
     initialLayout = src.initialLayout;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -1749,12 +1807,13 @@
 {
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageCreateInfo::initialize(const VkImageCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     imageType = in_struct->imageType;
     format = in_struct->format;
@@ -1768,6 +1827,7 @@
     queueFamilyIndexCount = in_struct->queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
     initialLayout = in_struct->initialLayout;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -1777,7 +1837,6 @@
 void safe_VkImageCreateInfo::initialize(const safe_VkImageCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     imageType = src->imageType;
     format = src->format;
@@ -1791,6 +1850,7 @@
     queueFamilyIndexCount = src->queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
     initialLayout = src->initialLayout;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src->pQueueFamilyIndices, sizeof(uint32_t)*src->queueFamilyIndexCount);
@@ -1799,7 +1859,6 @@
 
 safe_VkImageViewCreateInfo::safe_VkImageViewCreateInfo(const VkImageViewCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     image(in_struct->image),
     viewType(in_struct->viewType),
@@ -1807,6 +1866,7 @@
     components(in_struct->components),
     subresourceRange(in_struct->subresourceRange)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageViewCreateInfo::safe_VkImageViewCreateInfo()
@@ -1815,67 +1875,71 @@
 safe_VkImageViewCreateInfo::safe_VkImageViewCreateInfo(const safe_VkImageViewCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     image = src.image;
     viewType = src.viewType;
     format = src.format;
     components = src.components;
     subresourceRange = src.subresourceRange;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageViewCreateInfo& safe_VkImageViewCreateInfo::operator=(const safe_VkImageViewCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     image = src.image;
     viewType = src.viewType;
     format = src.format;
     components = src.components;
     subresourceRange = src.subresourceRange;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageViewCreateInfo::~safe_VkImageViewCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageViewCreateInfo::initialize(const VkImageViewCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     image = in_struct->image;
     viewType = in_struct->viewType;
     format = in_struct->format;
     components = in_struct->components;
     subresourceRange = in_struct->subresourceRange;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageViewCreateInfo::initialize(const safe_VkImageViewCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     image = src->image;
     viewType = src->viewType;
     format = src->format;
     components = src->components;
     subresourceRange = src->subresourceRange;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkShaderModuleCreateInfo::safe_VkShaderModuleCreateInfo(const VkShaderModuleCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     codeSize(in_struct->codeSize),
     pCode(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pCode) {
         pCode = reinterpret_cast<uint32_t *>(new uint8_t[codeSize]);
         memcpy((void *)pCode, (void *)in_struct->pCode, codeSize);
@@ -1889,10 +1953,10 @@
 safe_VkShaderModuleCreateInfo::safe_VkShaderModuleCreateInfo(const safe_VkShaderModuleCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     codeSize = src.codeSize;
     pCode = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pCode) {
         pCode = reinterpret_cast<uint32_t *>(new uint8_t[codeSize]);
         memcpy((void *)pCode, (void *)src.pCode, codeSize);
@@ -1905,12 +1969,14 @@
 
     if (pCode)
         delete[] reinterpret_cast<const uint8_t *>(pCode);
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     codeSize = src.codeSize;
     pCode = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pCode) {
         pCode = reinterpret_cast<uint32_t *>(new uint8_t[codeSize]);
         memcpy((void *)pCode, (void *)src.pCode, codeSize);
@@ -1923,15 +1989,17 @@
 {
     if (pCode)
         delete[] reinterpret_cast<const uint8_t *>(pCode);
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkShaderModuleCreateInfo::initialize(const VkShaderModuleCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     codeSize = in_struct->codeSize;
     pCode = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pCode) {
         pCode = reinterpret_cast<uint32_t *>(new uint8_t[codeSize]);
         memcpy((void *)pCode, (void *)in_struct->pCode, codeSize);
@@ -1941,10 +2009,10 @@
 void safe_VkShaderModuleCreateInfo::initialize(const safe_VkShaderModuleCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     codeSize = src->codeSize;
     pCode = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pCode) {
         pCode = reinterpret_cast<uint32_t *>(new uint8_t[codeSize]);
         memcpy((void *)pCode, (void *)src->pCode, codeSize);
@@ -1953,11 +2021,11 @@
 
 safe_VkPipelineCacheCreateInfo::safe_VkPipelineCacheCreateInfo(const VkPipelineCacheCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     initialDataSize(in_struct->initialDataSize),
     pInitialData(in_struct->pInitialData)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineCacheCreateInfo::safe_VkPipelineCacheCreateInfo()
@@ -1966,46 +2034,50 @@
 safe_VkPipelineCacheCreateInfo::safe_VkPipelineCacheCreateInfo(const safe_VkPipelineCacheCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     initialDataSize = src.initialDataSize;
     pInitialData = src.pInitialData;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineCacheCreateInfo& safe_VkPipelineCacheCreateInfo::operator=(const safe_VkPipelineCacheCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     initialDataSize = src.initialDataSize;
     pInitialData = src.pInitialData;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineCacheCreateInfo::~safe_VkPipelineCacheCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineCacheCreateInfo::initialize(const VkPipelineCacheCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     initialDataSize = in_struct->initialDataSize;
     pInitialData = in_struct->pInitialData;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineCacheCreateInfo::initialize(const safe_VkPipelineCacheCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     initialDataSize = src->initialDataSize;
     pInitialData = src->pInitialData;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSpecializationInfo::safe_VkSpecializationInfo(const VkSpecializationInfo* in_struct) :
@@ -2087,12 +2159,12 @@
 
 safe_VkPipelineShaderStageCreateInfo::safe_VkPipelineShaderStageCreateInfo(const VkPipelineShaderStageCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     stage(in_struct->stage),
     module(in_struct->module),
     pName(in_struct->pName)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pSpecializationInfo)
         pSpecializationInfo = new safe_VkSpecializationInfo(in_struct->pSpecializationInfo);
     else
@@ -2105,11 +2177,11 @@
 safe_VkPipelineShaderStageCreateInfo::safe_VkPipelineShaderStageCreateInfo(const safe_VkPipelineShaderStageCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stage = src.stage;
     module = src.module;
     pName = src.pName;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pSpecializationInfo)
         pSpecializationInfo = new safe_VkSpecializationInfo(*src.pSpecializationInfo);
     else
@@ -2122,13 +2194,15 @@
 
     if (pSpecializationInfo)
         delete pSpecializationInfo;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stage = src.stage;
     module = src.module;
     pName = src.pName;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pSpecializationInfo)
         pSpecializationInfo = new safe_VkSpecializationInfo(*src.pSpecializationInfo);
     else
@@ -2141,16 +2215,18 @@
 {
     if (pSpecializationInfo)
         delete pSpecializationInfo;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineShaderStageCreateInfo::initialize(const VkPipelineShaderStageCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     stage = in_struct->stage;
     module = in_struct->module;
     pName = in_struct->pName;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pSpecializationInfo)
         pSpecializationInfo = new safe_VkSpecializationInfo(in_struct->pSpecializationInfo);
     else
@@ -2160,11 +2236,11 @@
 void safe_VkPipelineShaderStageCreateInfo::initialize(const safe_VkPipelineShaderStageCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     stage = src->stage;
     module = src->module;
     pName = src->pName;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pSpecializationInfo)
         pSpecializationInfo = new safe_VkSpecializationInfo(*src->pSpecializationInfo);
     else
@@ -2173,13 +2249,13 @@
 
 safe_VkPipelineVertexInputStateCreateInfo::safe_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     vertexBindingDescriptionCount(in_struct->vertexBindingDescriptionCount),
     pVertexBindingDescriptions(nullptr),
     vertexAttributeDescriptionCount(in_struct->vertexAttributeDescriptionCount),
     pVertexAttributeDescriptions(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pVertexBindingDescriptions) {
         pVertexBindingDescriptions = new VkVertexInputBindingDescription[in_struct->vertexBindingDescriptionCount];
         memcpy ((void *)pVertexBindingDescriptions, (void *)in_struct->pVertexBindingDescriptions, sizeof(VkVertexInputBindingDescription)*in_struct->vertexBindingDescriptionCount);
@@ -2198,12 +2274,12 @@
 safe_VkPipelineVertexInputStateCreateInfo::safe_VkPipelineVertexInputStateCreateInfo(const safe_VkPipelineVertexInputStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     vertexBindingDescriptionCount = src.vertexBindingDescriptionCount;
     pVertexBindingDescriptions = nullptr;
     vertexAttributeDescriptionCount = src.vertexAttributeDescriptionCount;
     pVertexAttributeDescriptions = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pVertexBindingDescriptions) {
         pVertexBindingDescriptions = new VkVertexInputBindingDescription[src.vertexBindingDescriptionCount];
         memcpy ((void *)pVertexBindingDescriptions, (void *)src.pVertexBindingDescriptions, sizeof(VkVertexInputBindingDescription)*src.vertexBindingDescriptionCount);
@@ -2222,14 +2298,16 @@
         delete[] pVertexBindingDescriptions;
     if (pVertexAttributeDescriptions)
         delete[] pVertexAttributeDescriptions;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     vertexBindingDescriptionCount = src.vertexBindingDescriptionCount;
     pVertexBindingDescriptions = nullptr;
     vertexAttributeDescriptionCount = src.vertexAttributeDescriptionCount;
     pVertexAttributeDescriptions = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pVertexBindingDescriptions) {
         pVertexBindingDescriptions = new VkVertexInputBindingDescription[src.vertexBindingDescriptionCount];
         memcpy ((void *)pVertexBindingDescriptions, (void *)src.pVertexBindingDescriptions, sizeof(VkVertexInputBindingDescription)*src.vertexBindingDescriptionCount);
@@ -2248,17 +2326,19 @@
         delete[] pVertexBindingDescriptions;
     if (pVertexAttributeDescriptions)
         delete[] pVertexAttributeDescriptions;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineVertexInputStateCreateInfo::initialize(const VkPipelineVertexInputStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     vertexBindingDescriptionCount = in_struct->vertexBindingDescriptionCount;
     pVertexBindingDescriptions = nullptr;
     vertexAttributeDescriptionCount = in_struct->vertexAttributeDescriptionCount;
     pVertexAttributeDescriptions = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pVertexBindingDescriptions) {
         pVertexBindingDescriptions = new VkVertexInputBindingDescription[in_struct->vertexBindingDescriptionCount];
         memcpy ((void *)pVertexBindingDescriptions, (void *)in_struct->pVertexBindingDescriptions, sizeof(VkVertexInputBindingDescription)*in_struct->vertexBindingDescriptionCount);
@@ -2272,12 +2352,12 @@
 void safe_VkPipelineVertexInputStateCreateInfo::initialize(const safe_VkPipelineVertexInputStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     vertexBindingDescriptionCount = src->vertexBindingDescriptionCount;
     pVertexBindingDescriptions = nullptr;
     vertexAttributeDescriptionCount = src->vertexAttributeDescriptionCount;
     pVertexAttributeDescriptions = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pVertexBindingDescriptions) {
         pVertexBindingDescriptions = new VkVertexInputBindingDescription[src->vertexBindingDescriptionCount];
         memcpy ((void *)pVertexBindingDescriptions, (void *)src->pVertexBindingDescriptions, sizeof(VkVertexInputBindingDescription)*src->vertexBindingDescriptionCount);
@@ -2290,11 +2370,11 @@
 
 safe_VkPipelineInputAssemblyStateCreateInfo::safe_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     topology(in_struct->topology),
     primitiveRestartEnable(in_struct->primitiveRestartEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineInputAssemblyStateCreateInfo::safe_VkPipelineInputAssemblyStateCreateInfo()
@@ -2303,54 +2383,58 @@
 safe_VkPipelineInputAssemblyStateCreateInfo::safe_VkPipelineInputAssemblyStateCreateInfo(const safe_VkPipelineInputAssemblyStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     topology = src.topology;
     primitiveRestartEnable = src.primitiveRestartEnable;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineInputAssemblyStateCreateInfo& safe_VkPipelineInputAssemblyStateCreateInfo::operator=(const safe_VkPipelineInputAssemblyStateCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     topology = src.topology;
     primitiveRestartEnable = src.primitiveRestartEnable;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineInputAssemblyStateCreateInfo::~safe_VkPipelineInputAssemblyStateCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineInputAssemblyStateCreateInfo::initialize(const VkPipelineInputAssemblyStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     topology = in_struct->topology;
     primitiveRestartEnable = in_struct->primitiveRestartEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineInputAssemblyStateCreateInfo::initialize(const safe_VkPipelineInputAssemblyStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     topology = src->topology;
     primitiveRestartEnable = src->primitiveRestartEnable;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineTessellationStateCreateInfo::safe_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     patchControlPoints(in_struct->patchControlPoints)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineTessellationStateCreateInfo::safe_VkPipelineTessellationStateCreateInfo()
@@ -2359,53 +2443,57 @@
 safe_VkPipelineTessellationStateCreateInfo::safe_VkPipelineTessellationStateCreateInfo(const safe_VkPipelineTessellationStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     patchControlPoints = src.patchControlPoints;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineTessellationStateCreateInfo& safe_VkPipelineTessellationStateCreateInfo::operator=(const safe_VkPipelineTessellationStateCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     patchControlPoints = src.patchControlPoints;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineTessellationStateCreateInfo::~safe_VkPipelineTessellationStateCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineTessellationStateCreateInfo::initialize(const VkPipelineTessellationStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     patchControlPoints = in_struct->patchControlPoints;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineTessellationStateCreateInfo::initialize(const safe_VkPipelineTessellationStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     patchControlPoints = src->patchControlPoints;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineViewportStateCreateInfo::safe_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo* in_struct, const bool is_dynamic_viewports, const bool is_dynamic_scissors) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     viewportCount(in_struct->viewportCount),
     pViewports(nullptr),
     scissorCount(in_struct->scissorCount),
     pScissors(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewports && !is_dynamic_viewports) {
         pViewports = new VkViewport[in_struct->viewportCount];
         memcpy ((void *)pViewports, (void *)in_struct->pViewports, sizeof(VkViewport)*in_struct->viewportCount);
@@ -2428,12 +2516,12 @@
 safe_VkPipelineViewportStateCreateInfo::safe_VkPipelineViewportStateCreateInfo(const safe_VkPipelineViewportStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     viewportCount = src.viewportCount;
     pViewports = nullptr;
     scissorCount = src.scissorCount;
     pScissors = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewports) {
         pViewports = new VkViewport[src.viewportCount];
         memcpy ((void *)pViewports, (void *)src.pViewports, sizeof(VkViewport)*src.viewportCount);
@@ -2456,14 +2544,16 @@
         delete[] pViewports;
     if (pScissors)
         delete[] pScissors;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     viewportCount = src.viewportCount;
     pViewports = nullptr;
     scissorCount = src.scissorCount;
     pScissors = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewports) {
         pViewports = new VkViewport[src.viewportCount];
         memcpy ((void *)pViewports, (void *)src.pViewports, sizeof(VkViewport)*src.viewportCount);
@@ -2486,17 +2576,19 @@
         delete[] pViewports;
     if (pScissors)
         delete[] pScissors;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineViewportStateCreateInfo::initialize(const VkPipelineViewportStateCreateInfo* in_struct, const bool is_dynamic_viewports, const bool is_dynamic_scissors)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     viewportCount = in_struct->viewportCount;
     pViewports = nullptr;
     scissorCount = in_struct->scissorCount;
     pScissors = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewports && !is_dynamic_viewports) {
         pViewports = new VkViewport[in_struct->viewportCount];
         memcpy ((void *)pViewports, (void *)in_struct->pViewports, sizeof(VkViewport)*in_struct->viewportCount);
@@ -2514,12 +2606,12 @@
 void safe_VkPipelineViewportStateCreateInfo::initialize(const safe_VkPipelineViewportStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     viewportCount = src->viewportCount;
     pViewports = nullptr;
     scissorCount = src->scissorCount;
     pScissors = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pViewports) {
         pViewports = new VkViewport[src->viewportCount];
         memcpy ((void *)pViewports, (void *)src->pViewports, sizeof(VkViewport)*src->viewportCount);
@@ -2536,7 +2628,6 @@
 
 safe_VkPipelineRasterizationStateCreateInfo::safe_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     depthClampEnable(in_struct->depthClampEnable),
     rasterizerDiscardEnable(in_struct->rasterizerDiscardEnable),
@@ -2549,6 +2640,7 @@
     depthBiasSlopeFactor(in_struct->depthBiasSlopeFactor),
     lineWidth(in_struct->lineWidth)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineRasterizationStateCreateInfo::safe_VkPipelineRasterizationStateCreateInfo()
@@ -2557,7 +2649,6 @@
 safe_VkPipelineRasterizationStateCreateInfo::safe_VkPipelineRasterizationStateCreateInfo(const safe_VkPipelineRasterizationStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     depthClampEnable = src.depthClampEnable;
     rasterizerDiscardEnable = src.rasterizerDiscardEnable;
@@ -2569,15 +2660,17 @@
     depthBiasClamp = src.depthBiasClamp;
     depthBiasSlopeFactor = src.depthBiasSlopeFactor;
     lineWidth = src.lineWidth;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineRasterizationStateCreateInfo& safe_VkPipelineRasterizationStateCreateInfo::operator=(const safe_VkPipelineRasterizationStateCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     depthClampEnable = src.depthClampEnable;
     rasterizerDiscardEnable = src.rasterizerDiscardEnable;
@@ -2589,18 +2682,20 @@
     depthBiasClamp = src.depthBiasClamp;
     depthBiasSlopeFactor = src.depthBiasSlopeFactor;
     lineWidth = src.lineWidth;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineRasterizationStateCreateInfo::~safe_VkPipelineRasterizationStateCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineRasterizationStateCreateInfo::initialize(const VkPipelineRasterizationStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     depthClampEnable = in_struct->depthClampEnable;
     rasterizerDiscardEnable = in_struct->rasterizerDiscardEnable;
@@ -2612,12 +2707,12 @@
     depthBiasClamp = in_struct->depthBiasClamp;
     depthBiasSlopeFactor = in_struct->depthBiasSlopeFactor;
     lineWidth = in_struct->lineWidth;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineRasterizationStateCreateInfo::initialize(const safe_VkPipelineRasterizationStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     depthClampEnable = src->depthClampEnable;
     rasterizerDiscardEnable = src->rasterizerDiscardEnable;
@@ -2629,11 +2724,11 @@
     depthBiasClamp = src->depthBiasClamp;
     depthBiasSlopeFactor = src->depthBiasSlopeFactor;
     lineWidth = src->lineWidth;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineMultisampleStateCreateInfo::safe_VkPipelineMultisampleStateCreateInfo(const VkPipelineMultisampleStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     rasterizationSamples(in_struct->rasterizationSamples),
     sampleShadingEnable(in_struct->sampleShadingEnable),
@@ -2642,6 +2737,7 @@
     alphaToCoverageEnable(in_struct->alphaToCoverageEnable),
     alphaToOneEnable(in_struct->alphaToOneEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pSampleMask) {
         pSampleMask = new VkSampleMask(*in_struct->pSampleMask);
     }
@@ -2654,7 +2750,6 @@
 safe_VkPipelineMultisampleStateCreateInfo::safe_VkPipelineMultisampleStateCreateInfo(const safe_VkPipelineMultisampleStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     rasterizationSamples = src.rasterizationSamples;
     sampleShadingEnable = src.sampleShadingEnable;
@@ -2662,6 +2757,7 @@
     pSampleMask = nullptr;
     alphaToCoverageEnable = src.alphaToCoverageEnable;
     alphaToOneEnable = src.alphaToOneEnable;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pSampleMask) {
         pSampleMask = new VkSampleMask(*src.pSampleMask);
     }
@@ -2673,9 +2769,10 @@
 
     if (pSampleMask)
         delete pSampleMask;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     rasterizationSamples = src.rasterizationSamples;
     sampleShadingEnable = src.sampleShadingEnable;
@@ -2683,6 +2780,7 @@
     pSampleMask = nullptr;
     alphaToCoverageEnable = src.alphaToCoverageEnable;
     alphaToOneEnable = src.alphaToOneEnable;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pSampleMask) {
         pSampleMask = new VkSampleMask(*src.pSampleMask);
     }
@@ -2694,12 +2792,13 @@
 {
     if (pSampleMask)
         delete pSampleMask;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineMultisampleStateCreateInfo::initialize(const VkPipelineMultisampleStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     rasterizationSamples = in_struct->rasterizationSamples;
     sampleShadingEnable = in_struct->sampleShadingEnable;
@@ -2707,6 +2806,7 @@
     pSampleMask = nullptr;
     alphaToCoverageEnable = in_struct->alphaToCoverageEnable;
     alphaToOneEnable = in_struct->alphaToOneEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pSampleMask) {
         pSampleMask = new VkSampleMask(*in_struct->pSampleMask);
     }
@@ -2715,7 +2815,6 @@
 void safe_VkPipelineMultisampleStateCreateInfo::initialize(const safe_VkPipelineMultisampleStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     rasterizationSamples = src->rasterizationSamples;
     sampleShadingEnable = src->sampleShadingEnable;
@@ -2723,6 +2822,7 @@
     pSampleMask = nullptr;
     alphaToCoverageEnable = src->alphaToCoverageEnable;
     alphaToOneEnable = src->alphaToOneEnable;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pSampleMask) {
         pSampleMask = new VkSampleMask(*src->pSampleMask);
     }
@@ -2730,7 +2830,6 @@
 
 safe_VkPipelineDepthStencilStateCreateInfo::safe_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     depthTestEnable(in_struct->depthTestEnable),
     depthWriteEnable(in_struct->depthWriteEnable),
@@ -2742,6 +2841,7 @@
     minDepthBounds(in_struct->minDepthBounds),
     maxDepthBounds(in_struct->maxDepthBounds)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineDepthStencilStateCreateInfo::safe_VkPipelineDepthStencilStateCreateInfo()
@@ -2750,7 +2850,6 @@
 safe_VkPipelineDepthStencilStateCreateInfo::safe_VkPipelineDepthStencilStateCreateInfo(const safe_VkPipelineDepthStencilStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     depthTestEnable = src.depthTestEnable;
     depthWriteEnable = src.depthWriteEnable;
@@ -2761,15 +2860,17 @@
     back = src.back;
     minDepthBounds = src.minDepthBounds;
     maxDepthBounds = src.maxDepthBounds;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineDepthStencilStateCreateInfo& safe_VkPipelineDepthStencilStateCreateInfo::operator=(const safe_VkPipelineDepthStencilStateCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     depthTestEnable = src.depthTestEnable;
     depthWriteEnable = src.depthWriteEnable;
@@ -2780,18 +2881,20 @@
     back = src.back;
     minDepthBounds = src.minDepthBounds;
     maxDepthBounds = src.maxDepthBounds;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineDepthStencilStateCreateInfo::~safe_VkPipelineDepthStencilStateCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineDepthStencilStateCreateInfo::initialize(const VkPipelineDepthStencilStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     depthTestEnable = in_struct->depthTestEnable;
     depthWriteEnable = in_struct->depthWriteEnable;
@@ -2802,12 +2905,12 @@
     back = in_struct->back;
     minDepthBounds = in_struct->minDepthBounds;
     maxDepthBounds = in_struct->maxDepthBounds;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineDepthStencilStateCreateInfo::initialize(const safe_VkPipelineDepthStencilStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     depthTestEnable = src->depthTestEnable;
     depthWriteEnable = src->depthWriteEnable;
@@ -2818,17 +2921,18 @@
     back = src->back;
     minDepthBounds = src->minDepthBounds;
     maxDepthBounds = src->maxDepthBounds;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineColorBlendStateCreateInfo::safe_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     logicOpEnable(in_struct->logicOpEnable),
     logicOp(in_struct->logicOp),
     attachmentCount(in_struct->attachmentCount),
     pAttachments(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttachments) {
         pAttachments = new VkPipelineColorBlendAttachmentState[in_struct->attachmentCount];
         memcpy ((void *)pAttachments, (void *)in_struct->pAttachments, sizeof(VkPipelineColorBlendAttachmentState)*in_struct->attachmentCount);
@@ -2845,12 +2949,12 @@
 safe_VkPipelineColorBlendStateCreateInfo::safe_VkPipelineColorBlendStateCreateInfo(const safe_VkPipelineColorBlendStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     logicOpEnable = src.logicOpEnable;
     logicOp = src.logicOp;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttachments) {
         pAttachments = new VkPipelineColorBlendAttachmentState[src.attachmentCount];
         memcpy ((void *)pAttachments, (void *)src.pAttachments, sizeof(VkPipelineColorBlendAttachmentState)*src.attachmentCount);
@@ -2866,14 +2970,16 @@
 
     if (pAttachments)
         delete[] pAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     logicOpEnable = src.logicOpEnable;
     logicOp = src.logicOp;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttachments) {
         pAttachments = new VkPipelineColorBlendAttachmentState[src.attachmentCount];
         memcpy ((void *)pAttachments, (void *)src.pAttachments, sizeof(VkPipelineColorBlendAttachmentState)*src.attachmentCount);
@@ -2889,17 +2995,19 @@
 {
     if (pAttachments)
         delete[] pAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineColorBlendStateCreateInfo::initialize(const VkPipelineColorBlendStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     logicOpEnable = in_struct->logicOpEnable;
     logicOp = in_struct->logicOp;
     attachmentCount = in_struct->attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttachments) {
         pAttachments = new VkPipelineColorBlendAttachmentState[in_struct->attachmentCount];
         memcpy ((void *)pAttachments, (void *)in_struct->pAttachments, sizeof(VkPipelineColorBlendAttachmentState)*in_struct->attachmentCount);
@@ -2912,12 +3020,12 @@
 void safe_VkPipelineColorBlendStateCreateInfo::initialize(const safe_VkPipelineColorBlendStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     logicOpEnable = src->logicOpEnable;
     logicOp = src->logicOp;
     attachmentCount = src->attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttachments) {
         pAttachments = new VkPipelineColorBlendAttachmentState[src->attachmentCount];
         memcpy ((void *)pAttachments, (void *)src->pAttachments, sizeof(VkPipelineColorBlendAttachmentState)*src->attachmentCount);
@@ -2929,11 +3037,11 @@
 
 safe_VkPipelineDynamicStateCreateInfo::safe_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     dynamicStateCount(in_struct->dynamicStateCount),
     pDynamicStates(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDynamicStates) {
         pDynamicStates = new VkDynamicState[in_struct->dynamicStateCount];
         memcpy ((void *)pDynamicStates, (void *)in_struct->pDynamicStates, sizeof(VkDynamicState)*in_struct->dynamicStateCount);
@@ -2947,10 +3055,10 @@
 safe_VkPipelineDynamicStateCreateInfo::safe_VkPipelineDynamicStateCreateInfo(const safe_VkPipelineDynamicStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     dynamicStateCount = src.dynamicStateCount;
     pDynamicStates = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDynamicStates) {
         pDynamicStates = new VkDynamicState[src.dynamicStateCount];
         memcpy ((void *)pDynamicStates, (void *)src.pDynamicStates, sizeof(VkDynamicState)*src.dynamicStateCount);
@@ -2963,12 +3071,14 @@
 
     if (pDynamicStates)
         delete[] pDynamicStates;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     dynamicStateCount = src.dynamicStateCount;
     pDynamicStates = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDynamicStates) {
         pDynamicStates = new VkDynamicState[src.dynamicStateCount];
         memcpy ((void *)pDynamicStates, (void *)src.pDynamicStates, sizeof(VkDynamicState)*src.dynamicStateCount);
@@ -2981,15 +3091,17 @@
 {
     if (pDynamicStates)
         delete[] pDynamicStates;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineDynamicStateCreateInfo::initialize(const VkPipelineDynamicStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     dynamicStateCount = in_struct->dynamicStateCount;
     pDynamicStates = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDynamicStates) {
         pDynamicStates = new VkDynamicState[in_struct->dynamicStateCount];
         memcpy ((void *)pDynamicStates, (void *)in_struct->pDynamicStates, sizeof(VkDynamicState)*in_struct->dynamicStateCount);
@@ -2999,10 +3111,10 @@
 void safe_VkPipelineDynamicStateCreateInfo::initialize(const safe_VkPipelineDynamicStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     dynamicStateCount = src->dynamicStateCount;
     pDynamicStates = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDynamicStates) {
         pDynamicStates = new VkDynamicState[src->dynamicStateCount];
         memcpy ((void *)pDynamicStates, (void *)src->pDynamicStates, sizeof(VkDynamicState)*src->dynamicStateCount);
@@ -3011,7 +3123,6 @@
 
 safe_VkGraphicsPipelineCreateInfo::safe_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo* in_struct, const bool uses_color_attachment, const bool uses_depthstencil_attachment) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     stageCount(in_struct->stageCount),
     pStages(nullptr),
@@ -3021,6 +3132,7 @@
     basePipelineHandle(in_struct->basePipelineHandle),
     basePipelineIndex(in_struct->basePipelineIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (stageCount && in_struct->pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -3090,7 +3202,6 @@
 safe_VkGraphicsPipelineCreateInfo::safe_VkGraphicsPipelineCreateInfo(const safe_VkGraphicsPipelineCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stageCount = src.stageCount;
     pStages = nullptr;
@@ -3099,6 +3210,7 @@
     subpass = src.subpass;
     basePipelineHandle = src.basePipelineHandle;
     basePipelineIndex = src.basePipelineIndex;
+    pNext = SafePnextCopy(src.pNext);
     if (stageCount && src.pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -3173,9 +3285,10 @@
         delete pColorBlendState;
     if (pDynamicState)
         delete pDynamicState;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stageCount = src.stageCount;
     pStages = nullptr;
@@ -3184,6 +3297,7 @@
     subpass = src.subpass;
     basePipelineHandle = src.basePipelineHandle;
     basePipelineIndex = src.basePipelineIndex;
+    pNext = SafePnextCopy(src.pNext);
     if (stageCount && src.pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -3258,12 +3372,13 @@
         delete pColorBlendState;
     if (pDynamicState)
         delete pDynamicState;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkGraphicsPipelineCreateInfo::initialize(const VkGraphicsPipelineCreateInfo* in_struct, const bool uses_color_attachment, const bool uses_depthstencil_attachment)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     stageCount = in_struct->stageCount;
     pStages = nullptr;
@@ -3272,6 +3387,7 @@
     subpass = in_struct->subpass;
     basePipelineHandle = in_struct->basePipelineHandle;
     basePipelineIndex = in_struct->basePipelineIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (stageCount && in_struct->pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -3337,7 +3453,6 @@
 void safe_VkGraphicsPipelineCreateInfo::initialize(const safe_VkGraphicsPipelineCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     stageCount = src->stageCount;
     pStages = nullptr;
@@ -3346,6 +3461,7 @@
     subpass = src->subpass;
     basePipelineHandle = src->basePipelineHandle;
     basePipelineIndex = src->basePipelineIndex;
+    pNext = SafePnextCopy(src->pNext);
     if (stageCount && src->pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -3398,13 +3514,13 @@
 
 safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     stage(&in_struct->stage),
     layout(in_struct->layout),
     basePipelineHandle(in_struct->basePipelineHandle),
     basePipelineIndex(in_struct->basePipelineIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo()
@@ -3413,65 +3529,69 @@
 safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo(const safe_VkComputePipelineCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stage.initialize(&src.stage);
     layout = src.layout;
     basePipelineHandle = src.basePipelineHandle;
     basePipelineIndex = src.basePipelineIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkComputePipelineCreateInfo& safe_VkComputePipelineCreateInfo::operator=(const safe_VkComputePipelineCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stage.initialize(&src.stage);
     layout = src.layout;
     basePipelineHandle = src.basePipelineHandle;
     basePipelineIndex = src.basePipelineIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkComputePipelineCreateInfo::~safe_VkComputePipelineCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkComputePipelineCreateInfo::initialize(const VkComputePipelineCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     stage.initialize(&in_struct->stage);
     layout = in_struct->layout;
     basePipelineHandle = in_struct->basePipelineHandle;
     basePipelineIndex = in_struct->basePipelineIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkComputePipelineCreateInfo::initialize(const safe_VkComputePipelineCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     stage.initialize(&src->stage);
     layout = src->layout;
     basePipelineHandle = src->basePipelineHandle;
     basePipelineIndex = src->basePipelineIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineLayoutCreateInfo::safe_VkPipelineLayoutCreateInfo(const VkPipelineLayoutCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     setLayoutCount(in_struct->setLayoutCount),
     pSetLayouts(nullptr),
     pushConstantRangeCount(in_struct->pushConstantRangeCount),
     pPushConstantRanges(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (setLayoutCount && in_struct->pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[setLayoutCount];
         for (uint32_t i=0; i<setLayoutCount; ++i) {
@@ -3492,12 +3612,12 @@
 safe_VkPipelineLayoutCreateInfo::safe_VkPipelineLayoutCreateInfo(const safe_VkPipelineLayoutCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     setLayoutCount = src.setLayoutCount;
     pSetLayouts = nullptr;
     pushConstantRangeCount = src.pushConstantRangeCount;
     pPushConstantRanges = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (setLayoutCount && src.pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[setLayoutCount];
         for (uint32_t i=0; i<setLayoutCount; ++i) {
@@ -3518,14 +3638,16 @@
         delete[] pSetLayouts;
     if (pPushConstantRanges)
         delete[] pPushConstantRanges;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     setLayoutCount = src.setLayoutCount;
     pSetLayouts = nullptr;
     pushConstantRangeCount = src.pushConstantRangeCount;
     pPushConstantRanges = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (setLayoutCount && src.pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[setLayoutCount];
         for (uint32_t i=0; i<setLayoutCount; ++i) {
@@ -3546,17 +3668,19 @@
         delete[] pSetLayouts;
     if (pPushConstantRanges)
         delete[] pPushConstantRanges;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineLayoutCreateInfo::initialize(const VkPipelineLayoutCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     setLayoutCount = in_struct->setLayoutCount;
     pSetLayouts = nullptr;
     pushConstantRangeCount = in_struct->pushConstantRangeCount;
     pPushConstantRanges = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (setLayoutCount && in_struct->pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[setLayoutCount];
         for (uint32_t i=0; i<setLayoutCount; ++i) {
@@ -3572,12 +3696,12 @@
 void safe_VkPipelineLayoutCreateInfo::initialize(const safe_VkPipelineLayoutCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     setLayoutCount = src->setLayoutCount;
     pSetLayouts = nullptr;
     pushConstantRangeCount = src->pushConstantRangeCount;
     pPushConstantRanges = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (setLayoutCount && src->pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[setLayoutCount];
         for (uint32_t i=0; i<setLayoutCount; ++i) {
@@ -3592,7 +3716,6 @@
 
 safe_VkSamplerCreateInfo::safe_VkSamplerCreateInfo(const VkSamplerCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     magFilter(in_struct->magFilter),
     minFilter(in_struct->minFilter),
@@ -3610,6 +3733,7 @@
     borderColor(in_struct->borderColor),
     unnormalizedCoordinates(in_struct->unnormalizedCoordinates)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSamplerCreateInfo::safe_VkSamplerCreateInfo()
@@ -3618,7 +3742,6 @@
 safe_VkSamplerCreateInfo::safe_VkSamplerCreateInfo(const safe_VkSamplerCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     magFilter = src.magFilter;
     minFilter = src.minFilter;
@@ -3635,15 +3758,17 @@
     maxLod = src.maxLod;
     borderColor = src.borderColor;
     unnormalizedCoordinates = src.unnormalizedCoordinates;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSamplerCreateInfo& safe_VkSamplerCreateInfo::operator=(const safe_VkSamplerCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     magFilter = src.magFilter;
     minFilter = src.minFilter;
@@ -3660,18 +3785,20 @@
     maxLod = src.maxLod;
     borderColor = src.borderColor;
     unnormalizedCoordinates = src.unnormalizedCoordinates;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSamplerCreateInfo::~safe_VkSamplerCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSamplerCreateInfo::initialize(const VkSamplerCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     magFilter = in_struct->magFilter;
     minFilter = in_struct->minFilter;
@@ -3688,12 +3815,12 @@
     maxLod = in_struct->maxLod;
     borderColor = in_struct->borderColor;
     unnormalizedCoordinates = in_struct->unnormalizedCoordinates;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSamplerCreateInfo::initialize(const safe_VkSamplerCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     magFilter = src->magFilter;
     minFilter = src->minFilter;
@@ -3710,6 +3837,7 @@
     maxLod = src->maxLod;
     borderColor = src->borderColor;
     unnormalizedCoordinates = src->unnormalizedCoordinates;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding* in_struct) :
@@ -3811,11 +3939,11 @@
 
 safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     bindingCount(in_struct->bindingCount),
     pBindings(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (bindingCount && in_struct->pBindings) {
         pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount];
         for (uint32_t i=0; i<bindingCount; ++i) {
@@ -3831,10 +3959,10 @@
 safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo(const safe_VkDescriptorSetLayoutCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     bindingCount = src.bindingCount;
     pBindings = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (bindingCount && src.pBindings) {
         pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount];
         for (uint32_t i=0; i<bindingCount; ++i) {
@@ -3849,12 +3977,14 @@
 
     if (pBindings)
         delete[] pBindings;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     bindingCount = src.bindingCount;
     pBindings = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (bindingCount && src.pBindings) {
         pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount];
         for (uint32_t i=0; i<bindingCount; ++i) {
@@ -3869,15 +3999,17 @@
 {
     if (pBindings)
         delete[] pBindings;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorSetLayoutCreateInfo::initialize(const VkDescriptorSetLayoutCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     bindingCount = in_struct->bindingCount;
     pBindings = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (bindingCount && in_struct->pBindings) {
         pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount];
         for (uint32_t i=0; i<bindingCount; ++i) {
@@ -3889,10 +4021,10 @@
 void safe_VkDescriptorSetLayoutCreateInfo::initialize(const safe_VkDescriptorSetLayoutCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     bindingCount = src->bindingCount;
     pBindings = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (bindingCount && src->pBindings) {
         pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount];
         for (uint32_t i=0; i<bindingCount; ++i) {
@@ -3903,12 +4035,12 @@
 
 safe_VkDescriptorPoolCreateInfo::safe_VkDescriptorPoolCreateInfo(const VkDescriptorPoolCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     maxSets(in_struct->maxSets),
     poolSizeCount(in_struct->poolSizeCount),
     pPoolSizes(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPoolSizes) {
         pPoolSizes = new VkDescriptorPoolSize[in_struct->poolSizeCount];
         memcpy ((void *)pPoolSizes, (void *)in_struct->pPoolSizes, sizeof(VkDescriptorPoolSize)*in_struct->poolSizeCount);
@@ -3922,11 +4054,11 @@
 safe_VkDescriptorPoolCreateInfo::safe_VkDescriptorPoolCreateInfo(const safe_VkDescriptorPoolCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     maxSets = src.maxSets;
     poolSizeCount = src.poolSizeCount;
     pPoolSizes = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPoolSizes) {
         pPoolSizes = new VkDescriptorPoolSize[src.poolSizeCount];
         memcpy ((void *)pPoolSizes, (void *)src.pPoolSizes, sizeof(VkDescriptorPoolSize)*src.poolSizeCount);
@@ -3939,13 +4071,15 @@
 
     if (pPoolSizes)
         delete[] pPoolSizes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     maxSets = src.maxSets;
     poolSizeCount = src.poolSizeCount;
     pPoolSizes = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPoolSizes) {
         pPoolSizes = new VkDescriptorPoolSize[src.poolSizeCount];
         memcpy ((void *)pPoolSizes, (void *)src.pPoolSizes, sizeof(VkDescriptorPoolSize)*src.poolSizeCount);
@@ -3958,16 +4092,18 @@
 {
     if (pPoolSizes)
         delete[] pPoolSizes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorPoolCreateInfo::initialize(const VkDescriptorPoolCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     maxSets = in_struct->maxSets;
     poolSizeCount = in_struct->poolSizeCount;
     pPoolSizes = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPoolSizes) {
         pPoolSizes = new VkDescriptorPoolSize[in_struct->poolSizeCount];
         memcpy ((void *)pPoolSizes, (void *)in_struct->pPoolSizes, sizeof(VkDescriptorPoolSize)*in_struct->poolSizeCount);
@@ -3977,11 +4113,11 @@
 void safe_VkDescriptorPoolCreateInfo::initialize(const safe_VkDescriptorPoolCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     maxSets = src->maxSets;
     poolSizeCount = src->poolSizeCount;
     pPoolSizes = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pPoolSizes) {
         pPoolSizes = new VkDescriptorPoolSize[src->poolSizeCount];
         memcpy ((void *)pPoolSizes, (void *)src->pPoolSizes, sizeof(VkDescriptorPoolSize)*src->poolSizeCount);
@@ -3990,11 +4126,11 @@
 
 safe_VkDescriptorSetAllocateInfo::safe_VkDescriptorSetAllocateInfo(const VkDescriptorSetAllocateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     descriptorPool(in_struct->descriptorPool),
     descriptorSetCount(in_struct->descriptorSetCount),
     pSetLayouts(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (descriptorSetCount && in_struct->pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[descriptorSetCount];
         for (uint32_t i=0; i<descriptorSetCount; ++i) {
@@ -4010,10 +4146,10 @@
 safe_VkDescriptorSetAllocateInfo::safe_VkDescriptorSetAllocateInfo(const safe_VkDescriptorSetAllocateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     descriptorPool = src.descriptorPool;
     descriptorSetCount = src.descriptorSetCount;
     pSetLayouts = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (descriptorSetCount && src.pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[descriptorSetCount];
         for (uint32_t i=0; i<descriptorSetCount; ++i) {
@@ -4028,12 +4164,14 @@
 
     if (pSetLayouts)
         delete[] pSetLayouts;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     descriptorPool = src.descriptorPool;
     descriptorSetCount = src.descriptorSetCount;
     pSetLayouts = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (descriptorSetCount && src.pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[descriptorSetCount];
         for (uint32_t i=0; i<descriptorSetCount; ++i) {
@@ -4048,15 +4186,17 @@
 {
     if (pSetLayouts)
         delete[] pSetLayouts;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorSetAllocateInfo::initialize(const VkDescriptorSetAllocateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     descriptorPool = in_struct->descriptorPool;
     descriptorSetCount = in_struct->descriptorSetCount;
     pSetLayouts = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (descriptorSetCount && in_struct->pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[descriptorSetCount];
         for (uint32_t i=0; i<descriptorSetCount; ++i) {
@@ -4068,10 +4208,10 @@
 void safe_VkDescriptorSetAllocateInfo::initialize(const safe_VkDescriptorSetAllocateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     descriptorPool = src->descriptorPool;
     descriptorSetCount = src->descriptorSetCount;
     pSetLayouts = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (descriptorSetCount && src->pSetLayouts) {
         pSetLayouts = new VkDescriptorSetLayout[descriptorSetCount];
         for (uint32_t i=0; i<descriptorSetCount; ++i) {
@@ -4082,7 +4222,6 @@
 
 safe_VkWriteDescriptorSet::safe_VkWriteDescriptorSet(const VkWriteDescriptorSet* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     dstSet(in_struct->dstSet),
     dstBinding(in_struct->dstBinding),
     dstArrayElement(in_struct->dstArrayElement),
@@ -4092,6 +4231,7 @@
     pBufferInfo(nullptr),
     pTexelBufferView(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     switch (descriptorType) {
         case VK_DESCRIPTOR_TYPE_SAMPLER:
         case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
@@ -4139,7 +4279,6 @@
 safe_VkWriteDescriptorSet::safe_VkWriteDescriptorSet(const safe_VkWriteDescriptorSet& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     dstSet = src.dstSet;
     dstBinding = src.dstBinding;
     dstArrayElement = src.dstArrayElement;
@@ -4148,6 +4287,7 @@
     pImageInfo = nullptr;
     pBufferInfo = nullptr;
     pTexelBufferView = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     switch (descriptorType) {
         case VK_DESCRIPTOR_TYPE_SAMPLER:
         case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
@@ -4196,9 +4336,10 @@
         delete[] pBufferInfo;
     if (pTexelBufferView)
         delete[] pTexelBufferView;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     dstSet = src.dstSet;
     dstBinding = src.dstBinding;
     dstArrayElement = src.dstArrayElement;
@@ -4207,6 +4348,7 @@
     pImageInfo = nullptr;
     pBufferInfo = nullptr;
     pTexelBufferView = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     switch (descriptorType) {
         case VK_DESCRIPTOR_TYPE_SAMPLER:
         case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
@@ -4255,12 +4397,13 @@
         delete[] pBufferInfo;
     if (pTexelBufferView)
         delete[] pTexelBufferView;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkWriteDescriptorSet::initialize(const VkWriteDescriptorSet* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     dstSet = in_struct->dstSet;
     dstBinding = in_struct->dstBinding;
     dstArrayElement = in_struct->dstArrayElement;
@@ -4269,6 +4412,7 @@
     pImageInfo = nullptr;
     pBufferInfo = nullptr;
     pTexelBufferView = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     switch (descriptorType) {
         case VK_DESCRIPTOR_TYPE_SAMPLER:
         case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
@@ -4310,7 +4454,6 @@
 void safe_VkWriteDescriptorSet::initialize(const safe_VkWriteDescriptorSet* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     dstSet = src->dstSet;
     dstBinding = src->dstBinding;
     dstArrayElement = src->dstArrayElement;
@@ -4319,6 +4462,7 @@
     pImageInfo = nullptr;
     pBufferInfo = nullptr;
     pTexelBufferView = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     switch (descriptorType) {
         case VK_DESCRIPTOR_TYPE_SAMPLER:
         case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
@@ -4359,7 +4503,6 @@
 
 safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet(const VkCopyDescriptorSet* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcSet(in_struct->srcSet),
     srcBinding(in_struct->srcBinding),
     srcArrayElement(in_struct->srcArrayElement),
@@ -4368,6 +4511,7 @@
     dstArrayElement(in_struct->dstArrayElement),
     descriptorCount(in_struct->descriptorCount)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet()
@@ -4376,7 +4520,6 @@
 safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet(const safe_VkCopyDescriptorSet& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcSet = src.srcSet;
     srcBinding = src.srcBinding;
     srcArrayElement = src.srcArrayElement;
@@ -4384,15 +4527,17 @@
     dstBinding = src.dstBinding;
     dstArrayElement = src.dstArrayElement;
     descriptorCount = src.descriptorCount;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCopyDescriptorSet& safe_VkCopyDescriptorSet::operator=(const safe_VkCopyDescriptorSet& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcSet = src.srcSet;
     srcBinding = src.srcBinding;
     srcArrayElement = src.srcArrayElement;
@@ -4400,18 +4545,20 @@
     dstBinding = src.dstBinding;
     dstArrayElement = src.dstArrayElement;
     descriptorCount = src.descriptorCount;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCopyDescriptorSet::~safe_VkCopyDescriptorSet()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCopyDescriptorSet::initialize(const VkCopyDescriptorSet* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcSet = in_struct->srcSet;
     srcBinding = in_struct->srcBinding;
     srcArrayElement = in_struct->srcArrayElement;
@@ -4419,12 +4566,12 @@
     dstBinding = in_struct->dstBinding;
     dstArrayElement = in_struct->dstArrayElement;
     descriptorCount = in_struct->descriptorCount;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCopyDescriptorSet::initialize(const safe_VkCopyDescriptorSet* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcSet = src->srcSet;
     srcBinding = src->srcBinding;
     srcArrayElement = src->srcArrayElement;
@@ -4432,11 +4579,11 @@
     dstBinding = src->dstBinding;
     dstArrayElement = src->dstArrayElement;
     descriptorCount = src->descriptorCount;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkFramebufferCreateInfo::safe_VkFramebufferCreateInfo(const VkFramebufferCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     renderPass(in_struct->renderPass),
     attachmentCount(in_struct->attachmentCount),
@@ -4445,6 +4592,7 @@
     height(in_struct->height),
     layers(in_struct->layers)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentCount && in_struct->pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -4460,7 +4608,6 @@
 safe_VkFramebufferCreateInfo::safe_VkFramebufferCreateInfo(const safe_VkFramebufferCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     renderPass = src.renderPass;
     attachmentCount = src.attachmentCount;
@@ -4468,6 +4615,7 @@
     width = src.width;
     height = src.height;
     layers = src.layers;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentCount && src.pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -4482,9 +4630,10 @@
 
     if (pAttachments)
         delete[] pAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     renderPass = src.renderPass;
     attachmentCount = src.attachmentCount;
@@ -4492,6 +4641,7 @@
     width = src.width;
     height = src.height;
     layers = src.layers;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentCount && src.pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -4506,12 +4656,13 @@
 {
     if (pAttachments)
         delete[] pAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFramebufferCreateInfo::initialize(const VkFramebufferCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     renderPass = in_struct->renderPass;
     attachmentCount = in_struct->attachmentCount;
@@ -4519,6 +4670,7 @@
     width = in_struct->width;
     height = in_struct->height;
     layers = in_struct->layers;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentCount && in_struct->pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -4530,7 +4682,6 @@
 void safe_VkFramebufferCreateInfo::initialize(const safe_VkFramebufferCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     renderPass = src->renderPass;
     attachmentCount = src->attachmentCount;
@@ -4538,6 +4689,7 @@
     width = src->width;
     height = src->height;
     layers = src->layers;
+    pNext = SafePnextCopy(src->pNext);
     if (attachmentCount && src->pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -4750,7 +4902,6 @@
 
 safe_VkRenderPassCreateInfo::safe_VkRenderPassCreateInfo(const VkRenderPassCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     attachmentCount(in_struct->attachmentCount),
     pAttachments(nullptr),
@@ -4759,6 +4910,7 @@
     dependencyCount(in_struct->dependencyCount),
     pDependencies(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttachments) {
         pAttachments = new VkAttachmentDescription[in_struct->attachmentCount];
         memcpy ((void *)pAttachments, (void *)in_struct->pAttachments, sizeof(VkAttachmentDescription)*in_struct->attachmentCount);
@@ -4784,7 +4936,6 @@
 safe_VkRenderPassCreateInfo::safe_VkRenderPassCreateInfo(const safe_VkRenderPassCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
@@ -4792,6 +4943,7 @@
     pSubpasses = nullptr;
     dependencyCount = src.dependencyCount;
     pDependencies = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttachments) {
         pAttachments = new VkAttachmentDescription[src.attachmentCount];
         memcpy ((void *)pAttachments, (void *)src.pAttachments, sizeof(VkAttachmentDescription)*src.attachmentCount);
@@ -4818,9 +4970,10 @@
         delete[] pSubpasses;
     if (pDependencies)
         delete[] pDependencies;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
@@ -4828,6 +4981,7 @@
     pSubpasses = nullptr;
     dependencyCount = src.dependencyCount;
     pDependencies = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttachments) {
         pAttachments = new VkAttachmentDescription[src.attachmentCount];
         memcpy ((void *)pAttachments, (void *)src.pAttachments, sizeof(VkAttachmentDescription)*src.attachmentCount);
@@ -4854,12 +5008,13 @@
         delete[] pSubpasses;
     if (pDependencies)
         delete[] pDependencies;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassCreateInfo::initialize(const VkRenderPassCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     attachmentCount = in_struct->attachmentCount;
     pAttachments = nullptr;
@@ -4867,6 +5022,7 @@
     pSubpasses = nullptr;
     dependencyCount = in_struct->dependencyCount;
     pDependencies = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttachments) {
         pAttachments = new VkAttachmentDescription[in_struct->attachmentCount];
         memcpy ((void *)pAttachments, (void *)in_struct->pAttachments, sizeof(VkAttachmentDescription)*in_struct->attachmentCount);
@@ -4886,7 +5042,6 @@
 void safe_VkRenderPassCreateInfo::initialize(const safe_VkRenderPassCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     attachmentCount = src->attachmentCount;
     pAttachments = nullptr;
@@ -4894,6 +5049,7 @@
     pSubpasses = nullptr;
     dependencyCount = src->dependencyCount;
     pDependencies = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttachments) {
         pAttachments = new VkAttachmentDescription[src->attachmentCount];
         memcpy ((void *)pAttachments, (void *)src->pAttachments, sizeof(VkAttachmentDescription)*src->attachmentCount);
@@ -4912,10 +5068,10 @@
 
 safe_VkCommandPoolCreateInfo::safe_VkCommandPoolCreateInfo(const VkCommandPoolCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     queueFamilyIndex(in_struct->queueFamilyIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCommandPoolCreateInfo::safe_VkCommandPoolCreateInfo()
@@ -4924,51 +5080,55 @@
 safe_VkCommandPoolCreateInfo::safe_VkCommandPoolCreateInfo(const safe_VkCommandPoolCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueFamilyIndex = src.queueFamilyIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCommandPoolCreateInfo& safe_VkCommandPoolCreateInfo::operator=(const safe_VkCommandPoolCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueFamilyIndex = src.queueFamilyIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCommandPoolCreateInfo::~safe_VkCommandPoolCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCommandPoolCreateInfo::initialize(const VkCommandPoolCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     queueFamilyIndex = in_struct->queueFamilyIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCommandPoolCreateInfo::initialize(const safe_VkCommandPoolCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     queueFamilyIndex = src->queueFamilyIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCommandBufferAllocateInfo::safe_VkCommandBufferAllocateInfo(const VkCommandBufferAllocateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     commandPool(in_struct->commandPool),
     level(in_struct->level),
     commandBufferCount(in_struct->commandBufferCount)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCommandBufferAllocateInfo::safe_VkCommandBufferAllocateInfo()
@@ -4977,51 +5137,54 @@
 safe_VkCommandBufferAllocateInfo::safe_VkCommandBufferAllocateInfo(const safe_VkCommandBufferAllocateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     commandPool = src.commandPool;
     level = src.level;
     commandBufferCount = src.commandBufferCount;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCommandBufferAllocateInfo& safe_VkCommandBufferAllocateInfo::operator=(const safe_VkCommandBufferAllocateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     commandPool = src.commandPool;
     level = src.level;
     commandBufferCount = src.commandBufferCount;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCommandBufferAllocateInfo::~safe_VkCommandBufferAllocateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCommandBufferAllocateInfo::initialize(const VkCommandBufferAllocateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     commandPool = in_struct->commandPool;
     level = in_struct->level;
     commandBufferCount = in_struct->commandBufferCount;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCommandBufferAllocateInfo::initialize(const safe_VkCommandBufferAllocateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     commandPool = src->commandPool;
     level = src->level;
     commandBufferCount = src->commandBufferCount;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCommandBufferInheritanceInfo::safe_VkCommandBufferInheritanceInfo(const VkCommandBufferInheritanceInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     renderPass(in_struct->renderPass),
     subpass(in_struct->subpass),
     framebuffer(in_struct->framebuffer),
@@ -5029,6 +5192,7 @@
     queryFlags(in_struct->queryFlags),
     pipelineStatistics(in_struct->pipelineStatistics)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCommandBufferInheritanceInfo::safe_VkCommandBufferInheritanceInfo()
@@ -5037,65 +5201,69 @@
 safe_VkCommandBufferInheritanceInfo::safe_VkCommandBufferInheritanceInfo(const safe_VkCommandBufferInheritanceInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     renderPass = src.renderPass;
     subpass = src.subpass;
     framebuffer = src.framebuffer;
     occlusionQueryEnable = src.occlusionQueryEnable;
     queryFlags = src.queryFlags;
     pipelineStatistics = src.pipelineStatistics;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCommandBufferInheritanceInfo& safe_VkCommandBufferInheritanceInfo::operator=(const safe_VkCommandBufferInheritanceInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     renderPass = src.renderPass;
     subpass = src.subpass;
     framebuffer = src.framebuffer;
     occlusionQueryEnable = src.occlusionQueryEnable;
     queryFlags = src.queryFlags;
     pipelineStatistics = src.pipelineStatistics;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCommandBufferInheritanceInfo::~safe_VkCommandBufferInheritanceInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCommandBufferInheritanceInfo::initialize(const VkCommandBufferInheritanceInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     renderPass = in_struct->renderPass;
     subpass = in_struct->subpass;
     framebuffer = in_struct->framebuffer;
     occlusionQueryEnable = in_struct->occlusionQueryEnable;
     queryFlags = in_struct->queryFlags;
     pipelineStatistics = in_struct->pipelineStatistics;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCommandBufferInheritanceInfo::initialize(const safe_VkCommandBufferInheritanceInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     renderPass = src->renderPass;
     subpass = src->subpass;
     framebuffer = src->framebuffer;
     occlusionQueryEnable = src->occlusionQueryEnable;
     queryFlags = src->queryFlags;
     pipelineStatistics = src->pipelineStatistics;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCommandBufferBeginInfo::safe_VkCommandBufferBeginInfo(const VkCommandBufferBeginInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pInheritanceInfo)
         pInheritanceInfo = new safe_VkCommandBufferInheritanceInfo(in_struct->pInheritanceInfo);
     else
@@ -5108,8 +5276,8 @@
 safe_VkCommandBufferBeginInfo::safe_VkCommandBufferBeginInfo(const safe_VkCommandBufferBeginInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pInheritanceInfo)
         pInheritanceInfo = new safe_VkCommandBufferInheritanceInfo(*src.pInheritanceInfo);
     else
@@ -5122,10 +5290,12 @@
 
     if (pInheritanceInfo)
         delete pInheritanceInfo;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pInheritanceInfo)
         pInheritanceInfo = new safe_VkCommandBufferInheritanceInfo(*src.pInheritanceInfo);
     else
@@ -5138,13 +5308,15 @@
 {
     if (pInheritanceInfo)
         delete pInheritanceInfo;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCommandBufferBeginInfo::initialize(const VkCommandBufferBeginInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pInheritanceInfo)
         pInheritanceInfo = new safe_VkCommandBufferInheritanceInfo(in_struct->pInheritanceInfo);
     else
@@ -5154,8 +5326,8 @@
 void safe_VkCommandBufferBeginInfo::initialize(const safe_VkCommandBufferBeginInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pInheritanceInfo)
         pInheritanceInfo = new safe_VkCommandBufferInheritanceInfo(*src->pInheritanceInfo);
     else
@@ -5164,10 +5336,10 @@
 
 safe_VkMemoryBarrier::safe_VkMemoryBarrier(const VkMemoryBarrier* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcAccessMask(in_struct->srcAccessMask),
     dstAccessMask(in_struct->dstAccessMask)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryBarrier::safe_VkMemoryBarrier()
@@ -5176,47 +5348,50 @@
 safe_VkMemoryBarrier::safe_VkMemoryBarrier(const safe_VkMemoryBarrier& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcAccessMask = src.srcAccessMask;
     dstAccessMask = src.dstAccessMask;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryBarrier& safe_VkMemoryBarrier::operator=(const safe_VkMemoryBarrier& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcAccessMask = src.srcAccessMask;
     dstAccessMask = src.dstAccessMask;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryBarrier::~safe_VkMemoryBarrier()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryBarrier::initialize(const VkMemoryBarrier* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcAccessMask = in_struct->srcAccessMask;
     dstAccessMask = in_struct->dstAccessMask;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryBarrier::initialize(const safe_VkMemoryBarrier* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcAccessMask = src->srcAccessMask;
     dstAccessMask = src->dstAccessMask;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier(const VkBufferMemoryBarrier* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcAccessMask(in_struct->srcAccessMask),
     dstAccessMask(in_struct->dstAccessMask),
     srcQueueFamilyIndex(in_struct->srcQueueFamilyIndex),
@@ -5225,6 +5400,7 @@
     offset(in_struct->offset),
     size(in_struct->size)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier()
@@ -5233,7 +5409,6 @@
 safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier(const safe_VkBufferMemoryBarrier& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcAccessMask = src.srcAccessMask;
     dstAccessMask = src.dstAccessMask;
     srcQueueFamilyIndex = src.srcQueueFamilyIndex;
@@ -5241,15 +5416,17 @@
     buffer = src.buffer;
     offset = src.offset;
     size = src.size;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBufferMemoryBarrier& safe_VkBufferMemoryBarrier::operator=(const safe_VkBufferMemoryBarrier& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcAccessMask = src.srcAccessMask;
     dstAccessMask = src.dstAccessMask;
     srcQueueFamilyIndex = src.srcQueueFamilyIndex;
@@ -5257,18 +5434,20 @@
     buffer = src.buffer;
     offset = src.offset;
     size = src.size;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBufferMemoryBarrier::~safe_VkBufferMemoryBarrier()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBufferMemoryBarrier::initialize(const VkBufferMemoryBarrier* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcAccessMask = in_struct->srcAccessMask;
     dstAccessMask = in_struct->dstAccessMask;
     srcQueueFamilyIndex = in_struct->srcQueueFamilyIndex;
@@ -5276,12 +5455,12 @@
     buffer = in_struct->buffer;
     offset = in_struct->offset;
     size = in_struct->size;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBufferMemoryBarrier::initialize(const safe_VkBufferMemoryBarrier* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcAccessMask = src->srcAccessMask;
     dstAccessMask = src->dstAccessMask;
     srcQueueFamilyIndex = src->srcQueueFamilyIndex;
@@ -5289,11 +5468,11 @@
     buffer = src->buffer;
     offset = src->offset;
     size = src->size;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier(const VkImageMemoryBarrier* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcAccessMask(in_struct->srcAccessMask),
     dstAccessMask(in_struct->dstAccessMask),
     oldLayout(in_struct->oldLayout),
@@ -5303,6 +5482,7 @@
     image(in_struct->image),
     subresourceRange(in_struct->subresourceRange)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier()
@@ -5311,7 +5491,6 @@
 safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier(const safe_VkImageMemoryBarrier& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcAccessMask = src.srcAccessMask;
     dstAccessMask = src.dstAccessMask;
     oldLayout = src.oldLayout;
@@ -5320,15 +5499,17 @@
     dstQueueFamilyIndex = src.dstQueueFamilyIndex;
     image = src.image;
     subresourceRange = src.subresourceRange;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageMemoryBarrier& safe_VkImageMemoryBarrier::operator=(const safe_VkImageMemoryBarrier& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcAccessMask = src.srcAccessMask;
     dstAccessMask = src.dstAccessMask;
     oldLayout = src.oldLayout;
@@ -5337,18 +5518,20 @@
     dstQueueFamilyIndex = src.dstQueueFamilyIndex;
     image = src.image;
     subresourceRange = src.subresourceRange;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageMemoryBarrier::~safe_VkImageMemoryBarrier()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageMemoryBarrier::initialize(const VkImageMemoryBarrier* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcAccessMask = in_struct->srcAccessMask;
     dstAccessMask = in_struct->dstAccessMask;
     oldLayout = in_struct->oldLayout;
@@ -5357,12 +5540,12 @@
     dstQueueFamilyIndex = in_struct->dstQueueFamilyIndex;
     image = in_struct->image;
     subresourceRange = in_struct->subresourceRange;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageMemoryBarrier::initialize(const safe_VkImageMemoryBarrier* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcAccessMask = src->srcAccessMask;
     dstAccessMask = src->dstAccessMask;
     oldLayout = src->oldLayout;
@@ -5371,17 +5554,18 @@
     dstQueueFamilyIndex = src->dstQueueFamilyIndex;
     image = src->image;
     subresourceRange = src->subresourceRange;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkRenderPassBeginInfo::safe_VkRenderPassBeginInfo(const VkRenderPassBeginInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     renderPass(in_struct->renderPass),
     framebuffer(in_struct->framebuffer),
     renderArea(in_struct->renderArea),
     clearValueCount(in_struct->clearValueCount),
     pClearValues(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pClearValues) {
         pClearValues = new VkClearValue[in_struct->clearValueCount];
         memcpy ((void *)pClearValues, (void *)in_struct->pClearValues, sizeof(VkClearValue)*in_struct->clearValueCount);
@@ -5395,12 +5579,12 @@
 safe_VkRenderPassBeginInfo::safe_VkRenderPassBeginInfo(const safe_VkRenderPassBeginInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     renderPass = src.renderPass;
     framebuffer = src.framebuffer;
     renderArea = src.renderArea;
     clearValueCount = src.clearValueCount;
     pClearValues = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pClearValues) {
         pClearValues = new VkClearValue[src.clearValueCount];
         memcpy ((void *)pClearValues, (void *)src.pClearValues, sizeof(VkClearValue)*src.clearValueCount);
@@ -5413,14 +5597,16 @@
 
     if (pClearValues)
         delete[] pClearValues;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     renderPass = src.renderPass;
     framebuffer = src.framebuffer;
     renderArea = src.renderArea;
     clearValueCount = src.clearValueCount;
     pClearValues = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pClearValues) {
         pClearValues = new VkClearValue[src.clearValueCount];
         memcpy ((void *)pClearValues, (void *)src.pClearValues, sizeof(VkClearValue)*src.clearValueCount);
@@ -5433,17 +5619,19 @@
 {
     if (pClearValues)
         delete[] pClearValues;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassBeginInfo::initialize(const VkRenderPassBeginInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     renderPass = in_struct->renderPass;
     framebuffer = in_struct->framebuffer;
     renderArea = in_struct->renderArea;
     clearValueCount = in_struct->clearValueCount;
     pClearValues = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pClearValues) {
         pClearValues = new VkClearValue[in_struct->clearValueCount];
         memcpy ((void *)pClearValues, (void *)in_struct->pClearValues, sizeof(VkClearValue)*in_struct->clearValueCount);
@@ -5453,12 +5641,12 @@
 void safe_VkRenderPassBeginInfo::initialize(const safe_VkRenderPassBeginInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     renderPass = src->renderPass;
     framebuffer = src->framebuffer;
     renderArea = src->renderArea;
     clearValueCount = src->clearValueCount;
     pClearValues = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pClearValues) {
         pClearValues = new VkClearValue[src->clearValueCount];
         memcpy ((void *)pClearValues, (void *)src->pClearValues, sizeof(VkClearValue)*src->clearValueCount);
@@ -5467,12 +5655,12 @@
 
 safe_VkPhysicalDeviceSubgroupProperties::safe_VkPhysicalDeviceSubgroupProperties(const VkPhysicalDeviceSubgroupProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     subgroupSize(in_struct->subgroupSize),
     supportedStages(in_struct->supportedStages),
     supportedOperations(in_struct->supportedOperations),
     quadOperationsInAllStages(in_struct->quadOperationsInAllStages)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceSubgroupProperties::safe_VkPhysicalDeviceSubgroupProperties()
@@ -5481,59 +5669,63 @@
 safe_VkPhysicalDeviceSubgroupProperties::safe_VkPhysicalDeviceSubgroupProperties(const safe_VkPhysicalDeviceSubgroupProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     subgroupSize = src.subgroupSize;
     supportedStages = src.supportedStages;
     supportedOperations = src.supportedOperations;
     quadOperationsInAllStages = src.quadOperationsInAllStages;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceSubgroupProperties& safe_VkPhysicalDeviceSubgroupProperties::operator=(const safe_VkPhysicalDeviceSubgroupProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     subgroupSize = src.subgroupSize;
     supportedStages = src.supportedStages;
     supportedOperations = src.supportedOperations;
     quadOperationsInAllStages = src.quadOperationsInAllStages;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceSubgroupProperties::~safe_VkPhysicalDeviceSubgroupProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceSubgroupProperties::initialize(const VkPhysicalDeviceSubgroupProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     subgroupSize = in_struct->subgroupSize;
     supportedStages = in_struct->supportedStages;
     supportedOperations = in_struct->supportedOperations;
     quadOperationsInAllStages = in_struct->quadOperationsInAllStages;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceSubgroupProperties::initialize(const safe_VkPhysicalDeviceSubgroupProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     subgroupSize = src->subgroupSize;
     supportedStages = src->supportedStages;
     supportedOperations = src->supportedOperations;
     quadOperationsInAllStages = src->quadOperationsInAllStages;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBindBufferMemoryInfo::safe_VkBindBufferMemoryInfo(const VkBindBufferMemoryInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     buffer(in_struct->buffer),
     memory(in_struct->memory),
     memoryOffset(in_struct->memoryOffset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBindBufferMemoryInfo::safe_VkBindBufferMemoryInfo()
@@ -5542,55 +5734,59 @@
 safe_VkBindBufferMemoryInfo::safe_VkBindBufferMemoryInfo(const safe_VkBindBufferMemoryInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
     memory = src.memory;
     memoryOffset = src.memoryOffset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBindBufferMemoryInfo& safe_VkBindBufferMemoryInfo::operator=(const safe_VkBindBufferMemoryInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
     memory = src.memory;
     memoryOffset = src.memoryOffset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBindBufferMemoryInfo::~safe_VkBindBufferMemoryInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindBufferMemoryInfo::initialize(const VkBindBufferMemoryInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     buffer = in_struct->buffer;
     memory = in_struct->memory;
     memoryOffset = in_struct->memoryOffset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBindBufferMemoryInfo::initialize(const safe_VkBindBufferMemoryInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     buffer = src->buffer;
     memory = src->memory;
     memoryOffset = src->memoryOffset;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBindImageMemoryInfo::safe_VkBindImageMemoryInfo(const VkBindImageMemoryInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     image(in_struct->image),
     memory(in_struct->memory),
     memoryOffset(in_struct->memoryOffset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBindImageMemoryInfo::safe_VkBindImageMemoryInfo()
@@ -5599,56 +5795,60 @@
 safe_VkBindImageMemoryInfo::safe_VkBindImageMemoryInfo(const safe_VkBindImageMemoryInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
     memory = src.memory;
     memoryOffset = src.memoryOffset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBindImageMemoryInfo& safe_VkBindImageMemoryInfo::operator=(const safe_VkBindImageMemoryInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
     memory = src.memory;
     memoryOffset = src.memoryOffset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBindImageMemoryInfo::~safe_VkBindImageMemoryInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindImageMemoryInfo::initialize(const VkBindImageMemoryInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     image = in_struct->image;
     memory = in_struct->memory;
     memoryOffset = in_struct->memoryOffset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBindImageMemoryInfo::initialize(const safe_VkBindImageMemoryInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     image = src->image;
     memory = src->memory;
     memoryOffset = src->memoryOffset;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDevice16BitStorageFeatures::safe_VkPhysicalDevice16BitStorageFeatures(const VkPhysicalDevice16BitStorageFeatures* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     storageBuffer16BitAccess(in_struct->storageBuffer16BitAccess),
     uniformAndStorageBuffer16BitAccess(in_struct->uniformAndStorageBuffer16BitAccess),
     storagePushConstant16(in_struct->storagePushConstant16),
     storageInputOutput16(in_struct->storageInputOutput16)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDevice16BitStorageFeatures::safe_VkPhysicalDevice16BitStorageFeatures()
@@ -5657,58 +5857,62 @@
 safe_VkPhysicalDevice16BitStorageFeatures::safe_VkPhysicalDevice16BitStorageFeatures(const safe_VkPhysicalDevice16BitStorageFeatures& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     storageBuffer16BitAccess = src.storageBuffer16BitAccess;
     uniformAndStorageBuffer16BitAccess = src.uniformAndStorageBuffer16BitAccess;
     storagePushConstant16 = src.storagePushConstant16;
     storageInputOutput16 = src.storageInputOutput16;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDevice16BitStorageFeatures& safe_VkPhysicalDevice16BitStorageFeatures::operator=(const safe_VkPhysicalDevice16BitStorageFeatures& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     storageBuffer16BitAccess = src.storageBuffer16BitAccess;
     uniformAndStorageBuffer16BitAccess = src.uniformAndStorageBuffer16BitAccess;
     storagePushConstant16 = src.storagePushConstant16;
     storageInputOutput16 = src.storageInputOutput16;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDevice16BitStorageFeatures::~safe_VkPhysicalDevice16BitStorageFeatures()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDevice16BitStorageFeatures::initialize(const VkPhysicalDevice16BitStorageFeatures* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     storageBuffer16BitAccess = in_struct->storageBuffer16BitAccess;
     uniformAndStorageBuffer16BitAccess = in_struct->uniformAndStorageBuffer16BitAccess;
     storagePushConstant16 = in_struct->storagePushConstant16;
     storageInputOutput16 = in_struct->storageInputOutput16;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDevice16BitStorageFeatures::initialize(const safe_VkPhysicalDevice16BitStorageFeatures* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     storageBuffer16BitAccess = src->storageBuffer16BitAccess;
     uniformAndStorageBuffer16BitAccess = src->uniformAndStorageBuffer16BitAccess;
     storagePushConstant16 = src->storagePushConstant16;
     storageInputOutput16 = src->storageInputOutput16;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryDedicatedRequirements::safe_VkMemoryDedicatedRequirements(const VkMemoryDedicatedRequirements* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     prefersDedicatedAllocation(in_struct->prefersDedicatedAllocation),
     requiresDedicatedAllocation(in_struct->requiresDedicatedAllocation)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryDedicatedRequirements::safe_VkMemoryDedicatedRequirements()
@@ -5717,50 +5921,54 @@
 safe_VkMemoryDedicatedRequirements::safe_VkMemoryDedicatedRequirements(const safe_VkMemoryDedicatedRequirements& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     prefersDedicatedAllocation = src.prefersDedicatedAllocation;
     requiresDedicatedAllocation = src.requiresDedicatedAllocation;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryDedicatedRequirements& safe_VkMemoryDedicatedRequirements::operator=(const safe_VkMemoryDedicatedRequirements& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     prefersDedicatedAllocation = src.prefersDedicatedAllocation;
     requiresDedicatedAllocation = src.requiresDedicatedAllocation;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryDedicatedRequirements::~safe_VkMemoryDedicatedRequirements()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryDedicatedRequirements::initialize(const VkMemoryDedicatedRequirements* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     prefersDedicatedAllocation = in_struct->prefersDedicatedAllocation;
     requiresDedicatedAllocation = in_struct->requiresDedicatedAllocation;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryDedicatedRequirements::initialize(const safe_VkMemoryDedicatedRequirements* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     prefersDedicatedAllocation = src->prefersDedicatedAllocation;
     requiresDedicatedAllocation = src->requiresDedicatedAllocation;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryDedicatedAllocateInfo::safe_VkMemoryDedicatedAllocateInfo(const VkMemoryDedicatedAllocateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     image(in_struct->image),
     buffer(in_struct->buffer)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryDedicatedAllocateInfo::safe_VkMemoryDedicatedAllocateInfo()
@@ -5769,50 +5977,54 @@
 safe_VkMemoryDedicatedAllocateInfo::safe_VkMemoryDedicatedAllocateInfo(const safe_VkMemoryDedicatedAllocateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryDedicatedAllocateInfo& safe_VkMemoryDedicatedAllocateInfo::operator=(const safe_VkMemoryDedicatedAllocateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryDedicatedAllocateInfo::~safe_VkMemoryDedicatedAllocateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryDedicatedAllocateInfo::initialize(const VkMemoryDedicatedAllocateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     image = in_struct->image;
     buffer = in_struct->buffer;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryDedicatedAllocateInfo::initialize(const safe_VkMemoryDedicatedAllocateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     image = src->image;
     buffer = src->buffer;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryAllocateFlagsInfo::safe_VkMemoryAllocateFlagsInfo(const VkMemoryAllocateFlagsInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     deviceMask(in_struct->deviceMask)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryAllocateFlagsInfo::safe_VkMemoryAllocateFlagsInfo()
@@ -5821,51 +6033,55 @@
 safe_VkMemoryAllocateFlagsInfo::safe_VkMemoryAllocateFlagsInfo(const safe_VkMemoryAllocateFlagsInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     deviceMask = src.deviceMask;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryAllocateFlagsInfo& safe_VkMemoryAllocateFlagsInfo::operator=(const safe_VkMemoryAllocateFlagsInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     deviceMask = src.deviceMask;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryAllocateFlagsInfo::~safe_VkMemoryAllocateFlagsInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryAllocateFlagsInfo::initialize(const VkMemoryAllocateFlagsInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     deviceMask = in_struct->deviceMask;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryAllocateFlagsInfo::initialize(const safe_VkMemoryAllocateFlagsInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     deviceMask = src->deviceMask;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceGroupRenderPassBeginInfo::safe_VkDeviceGroupRenderPassBeginInfo(const VkDeviceGroupRenderPassBeginInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceMask(in_struct->deviceMask),
     deviceRenderAreaCount(in_struct->deviceRenderAreaCount),
     pDeviceRenderAreas(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceRenderAreas) {
         pDeviceRenderAreas = new VkRect2D[in_struct->deviceRenderAreaCount];
         memcpy ((void *)pDeviceRenderAreas, (void *)in_struct->pDeviceRenderAreas, sizeof(VkRect2D)*in_struct->deviceRenderAreaCount);
@@ -5879,10 +6095,10 @@
 safe_VkDeviceGroupRenderPassBeginInfo::safe_VkDeviceGroupRenderPassBeginInfo(const safe_VkDeviceGroupRenderPassBeginInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceMask = src.deviceMask;
     deviceRenderAreaCount = src.deviceRenderAreaCount;
     pDeviceRenderAreas = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceRenderAreas) {
         pDeviceRenderAreas = new VkRect2D[src.deviceRenderAreaCount];
         memcpy ((void *)pDeviceRenderAreas, (void *)src.pDeviceRenderAreas, sizeof(VkRect2D)*src.deviceRenderAreaCount);
@@ -5895,12 +6111,14 @@
 
     if (pDeviceRenderAreas)
         delete[] pDeviceRenderAreas;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceMask = src.deviceMask;
     deviceRenderAreaCount = src.deviceRenderAreaCount;
     pDeviceRenderAreas = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceRenderAreas) {
         pDeviceRenderAreas = new VkRect2D[src.deviceRenderAreaCount];
         memcpy ((void *)pDeviceRenderAreas, (void *)src.pDeviceRenderAreas, sizeof(VkRect2D)*src.deviceRenderAreaCount);
@@ -5913,15 +6131,17 @@
 {
     if (pDeviceRenderAreas)
         delete[] pDeviceRenderAreas;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupRenderPassBeginInfo::initialize(const VkDeviceGroupRenderPassBeginInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceMask = in_struct->deviceMask;
     deviceRenderAreaCount = in_struct->deviceRenderAreaCount;
     pDeviceRenderAreas = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceRenderAreas) {
         pDeviceRenderAreas = new VkRect2D[in_struct->deviceRenderAreaCount];
         memcpy ((void *)pDeviceRenderAreas, (void *)in_struct->pDeviceRenderAreas, sizeof(VkRect2D)*in_struct->deviceRenderAreaCount);
@@ -5931,10 +6151,10 @@
 void safe_VkDeviceGroupRenderPassBeginInfo::initialize(const safe_VkDeviceGroupRenderPassBeginInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceMask = src->deviceMask;
     deviceRenderAreaCount = src->deviceRenderAreaCount;
     pDeviceRenderAreas = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDeviceRenderAreas) {
         pDeviceRenderAreas = new VkRect2D[src->deviceRenderAreaCount];
         memcpy ((void *)pDeviceRenderAreas, (void *)src->pDeviceRenderAreas, sizeof(VkRect2D)*src->deviceRenderAreaCount);
@@ -5943,9 +6163,9 @@
 
 safe_VkDeviceGroupCommandBufferBeginInfo::safe_VkDeviceGroupCommandBufferBeginInfo(const VkDeviceGroupCommandBufferBeginInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceMask(in_struct->deviceMask)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceGroupCommandBufferBeginInfo::safe_VkDeviceGroupCommandBufferBeginInfo()
@@ -5954,43 +6174,46 @@
 safe_VkDeviceGroupCommandBufferBeginInfo::safe_VkDeviceGroupCommandBufferBeginInfo(const safe_VkDeviceGroupCommandBufferBeginInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceMask = src.deviceMask;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceGroupCommandBufferBeginInfo& safe_VkDeviceGroupCommandBufferBeginInfo::operator=(const safe_VkDeviceGroupCommandBufferBeginInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceMask = src.deviceMask;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceGroupCommandBufferBeginInfo::~safe_VkDeviceGroupCommandBufferBeginInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupCommandBufferBeginInfo::initialize(const VkDeviceGroupCommandBufferBeginInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceMask = in_struct->deviceMask;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceGroupCommandBufferBeginInfo::initialize(const safe_VkDeviceGroupCommandBufferBeginInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceMask = src->deviceMask;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceGroupSubmitInfo::safe_VkDeviceGroupSubmitInfo(const VkDeviceGroupSubmitInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     waitSemaphoreCount(in_struct->waitSemaphoreCount),
     pWaitSemaphoreDeviceIndices(nullptr),
     commandBufferCount(in_struct->commandBufferCount),
@@ -5998,6 +6221,7 @@
     signalSemaphoreCount(in_struct->signalSemaphoreCount),
     pSignalSemaphoreDeviceIndices(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pWaitSemaphoreDeviceIndices) {
         pWaitSemaphoreDeviceIndices = new uint32_t[in_struct->waitSemaphoreCount];
         memcpy ((void *)pWaitSemaphoreDeviceIndices, (void *)in_struct->pWaitSemaphoreDeviceIndices, sizeof(uint32_t)*in_struct->waitSemaphoreCount);
@@ -6021,13 +6245,13 @@
 safe_VkDeviceGroupSubmitInfo::safe_VkDeviceGroupSubmitInfo(const safe_VkDeviceGroupSubmitInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphoreDeviceIndices = nullptr;
     commandBufferCount = src.commandBufferCount;
     pCommandBufferDeviceMasks = nullptr;
     signalSemaphoreCount = src.signalSemaphoreCount;
     pSignalSemaphoreDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pWaitSemaphoreDeviceIndices) {
         pWaitSemaphoreDeviceIndices = new uint32_t[src.waitSemaphoreCount];
         memcpy ((void *)pWaitSemaphoreDeviceIndices, (void *)src.pWaitSemaphoreDeviceIndices, sizeof(uint32_t)*src.waitSemaphoreCount);
@@ -6052,15 +6276,17 @@
         delete[] pCommandBufferDeviceMasks;
     if (pSignalSemaphoreDeviceIndices)
         delete[] pSignalSemaphoreDeviceIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphoreDeviceIndices = nullptr;
     commandBufferCount = src.commandBufferCount;
     pCommandBufferDeviceMasks = nullptr;
     signalSemaphoreCount = src.signalSemaphoreCount;
     pSignalSemaphoreDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pWaitSemaphoreDeviceIndices) {
         pWaitSemaphoreDeviceIndices = new uint32_t[src.waitSemaphoreCount];
         memcpy ((void *)pWaitSemaphoreDeviceIndices, (void *)src.pWaitSemaphoreDeviceIndices, sizeof(uint32_t)*src.waitSemaphoreCount);
@@ -6085,18 +6311,20 @@
         delete[] pCommandBufferDeviceMasks;
     if (pSignalSemaphoreDeviceIndices)
         delete[] pSignalSemaphoreDeviceIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupSubmitInfo::initialize(const VkDeviceGroupSubmitInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     waitSemaphoreCount = in_struct->waitSemaphoreCount;
     pWaitSemaphoreDeviceIndices = nullptr;
     commandBufferCount = in_struct->commandBufferCount;
     pCommandBufferDeviceMasks = nullptr;
     signalSemaphoreCount = in_struct->signalSemaphoreCount;
     pSignalSemaphoreDeviceIndices = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pWaitSemaphoreDeviceIndices) {
         pWaitSemaphoreDeviceIndices = new uint32_t[in_struct->waitSemaphoreCount];
         memcpy ((void *)pWaitSemaphoreDeviceIndices, (void *)in_struct->pWaitSemaphoreDeviceIndices, sizeof(uint32_t)*in_struct->waitSemaphoreCount);
@@ -6114,13 +6342,13 @@
 void safe_VkDeviceGroupSubmitInfo::initialize(const safe_VkDeviceGroupSubmitInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     waitSemaphoreCount = src->waitSemaphoreCount;
     pWaitSemaphoreDeviceIndices = nullptr;
     commandBufferCount = src->commandBufferCount;
     pCommandBufferDeviceMasks = nullptr;
     signalSemaphoreCount = src->signalSemaphoreCount;
     pSignalSemaphoreDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pWaitSemaphoreDeviceIndices) {
         pWaitSemaphoreDeviceIndices = new uint32_t[src->waitSemaphoreCount];
         memcpy ((void *)pWaitSemaphoreDeviceIndices, (void *)src->pWaitSemaphoreDeviceIndices, sizeof(uint32_t)*src->waitSemaphoreCount);
@@ -6137,10 +6365,10 @@
 
 safe_VkDeviceGroupBindSparseInfo::safe_VkDeviceGroupBindSparseInfo(const VkDeviceGroupBindSparseInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     resourceDeviceIndex(in_struct->resourceDeviceIndex),
     memoryDeviceIndex(in_struct->memoryDeviceIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceGroupBindSparseInfo::safe_VkDeviceGroupBindSparseInfo()
@@ -6149,50 +6377,54 @@
 safe_VkDeviceGroupBindSparseInfo::safe_VkDeviceGroupBindSparseInfo(const safe_VkDeviceGroupBindSparseInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     resourceDeviceIndex = src.resourceDeviceIndex;
     memoryDeviceIndex = src.memoryDeviceIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceGroupBindSparseInfo& safe_VkDeviceGroupBindSparseInfo::operator=(const safe_VkDeviceGroupBindSparseInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     resourceDeviceIndex = src.resourceDeviceIndex;
     memoryDeviceIndex = src.memoryDeviceIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceGroupBindSparseInfo::~safe_VkDeviceGroupBindSparseInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupBindSparseInfo::initialize(const VkDeviceGroupBindSparseInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     resourceDeviceIndex = in_struct->resourceDeviceIndex;
     memoryDeviceIndex = in_struct->memoryDeviceIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceGroupBindSparseInfo::initialize(const safe_VkDeviceGroupBindSparseInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     resourceDeviceIndex = src->resourceDeviceIndex;
     memoryDeviceIndex = src->memoryDeviceIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBindBufferMemoryDeviceGroupInfo::safe_VkBindBufferMemoryDeviceGroupInfo(const VkBindBufferMemoryDeviceGroupInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceIndexCount(in_struct->deviceIndexCount),
     pDeviceIndices(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceIndices) {
         pDeviceIndices = new uint32_t[in_struct->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)in_struct->pDeviceIndices, sizeof(uint32_t)*in_struct->deviceIndexCount);
@@ -6206,9 +6438,9 @@
 safe_VkBindBufferMemoryDeviceGroupInfo::safe_VkBindBufferMemoryDeviceGroupInfo(const safe_VkBindBufferMemoryDeviceGroupInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceIndexCount = src.deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceIndices) {
         pDeviceIndices = new uint32_t[src.deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src.pDeviceIndices, sizeof(uint32_t)*src.deviceIndexCount);
@@ -6221,11 +6453,13 @@
 
     if (pDeviceIndices)
         delete[] pDeviceIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceIndexCount = src.deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceIndices) {
         pDeviceIndices = new uint32_t[src.deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src.pDeviceIndices, sizeof(uint32_t)*src.deviceIndexCount);
@@ -6238,14 +6472,16 @@
 {
     if (pDeviceIndices)
         delete[] pDeviceIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindBufferMemoryDeviceGroupInfo::initialize(const VkBindBufferMemoryDeviceGroupInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceIndexCount = in_struct->deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceIndices) {
         pDeviceIndices = new uint32_t[in_struct->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)in_struct->pDeviceIndices, sizeof(uint32_t)*in_struct->deviceIndexCount);
@@ -6255,9 +6491,9 @@
 void safe_VkBindBufferMemoryDeviceGroupInfo::initialize(const safe_VkBindBufferMemoryDeviceGroupInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceIndexCount = src->deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDeviceIndices) {
         pDeviceIndices = new uint32_t[src->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src->pDeviceIndices, sizeof(uint32_t)*src->deviceIndexCount);
@@ -6266,12 +6502,12 @@
 
 safe_VkBindImageMemoryDeviceGroupInfo::safe_VkBindImageMemoryDeviceGroupInfo(const VkBindImageMemoryDeviceGroupInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceIndexCount(in_struct->deviceIndexCount),
     pDeviceIndices(nullptr),
     splitInstanceBindRegionCount(in_struct->splitInstanceBindRegionCount),
     pSplitInstanceBindRegions(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceIndices) {
         pDeviceIndices = new uint32_t[in_struct->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)in_struct->pDeviceIndices, sizeof(uint32_t)*in_struct->deviceIndexCount);
@@ -6290,11 +6526,11 @@
 safe_VkBindImageMemoryDeviceGroupInfo::safe_VkBindImageMemoryDeviceGroupInfo(const safe_VkBindImageMemoryDeviceGroupInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceIndexCount = src.deviceIndexCount;
     pDeviceIndices = nullptr;
     splitInstanceBindRegionCount = src.splitInstanceBindRegionCount;
     pSplitInstanceBindRegions = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceIndices) {
         pDeviceIndices = new uint32_t[src.deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src.pDeviceIndices, sizeof(uint32_t)*src.deviceIndexCount);
@@ -6313,13 +6549,15 @@
         delete[] pDeviceIndices;
     if (pSplitInstanceBindRegions)
         delete[] pSplitInstanceBindRegions;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceIndexCount = src.deviceIndexCount;
     pDeviceIndices = nullptr;
     splitInstanceBindRegionCount = src.splitInstanceBindRegionCount;
     pSplitInstanceBindRegions = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceIndices) {
         pDeviceIndices = new uint32_t[src.deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src.pDeviceIndices, sizeof(uint32_t)*src.deviceIndexCount);
@@ -6338,16 +6576,18 @@
         delete[] pDeviceIndices;
     if (pSplitInstanceBindRegions)
         delete[] pSplitInstanceBindRegions;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindImageMemoryDeviceGroupInfo::initialize(const VkBindImageMemoryDeviceGroupInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceIndexCount = in_struct->deviceIndexCount;
     pDeviceIndices = nullptr;
     splitInstanceBindRegionCount = in_struct->splitInstanceBindRegionCount;
     pSplitInstanceBindRegions = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceIndices) {
         pDeviceIndices = new uint32_t[in_struct->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)in_struct->pDeviceIndices, sizeof(uint32_t)*in_struct->deviceIndexCount);
@@ -6361,11 +6601,11 @@
 void safe_VkBindImageMemoryDeviceGroupInfo::initialize(const safe_VkBindImageMemoryDeviceGroupInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceIndexCount = src->deviceIndexCount;
     pDeviceIndices = nullptr;
     splitInstanceBindRegionCount = src->splitInstanceBindRegionCount;
     pSplitInstanceBindRegions = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDeviceIndices) {
         pDeviceIndices = new uint32_t[src->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src->pDeviceIndices, sizeof(uint32_t)*src->deviceIndexCount);
@@ -6378,10 +6618,10 @@
 
 safe_VkPhysicalDeviceGroupProperties::safe_VkPhysicalDeviceGroupProperties(const VkPhysicalDeviceGroupProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     physicalDeviceCount(in_struct->physicalDeviceCount),
     subsetAllocation(in_struct->subsetAllocation)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         physicalDevices[i] = in_struct->physicalDevices[i];
     }
@@ -6393,9 +6633,9 @@
 safe_VkPhysicalDeviceGroupProperties::safe_VkPhysicalDeviceGroupProperties(const safe_VkPhysicalDeviceGroupProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     physicalDeviceCount = src.physicalDeviceCount;
     subsetAllocation = src.subsetAllocation;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         physicalDevices[i] = src.physicalDevices[i];
     }
@@ -6405,11 +6645,13 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     physicalDeviceCount = src.physicalDeviceCount;
     subsetAllocation = src.subsetAllocation;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         physicalDevices[i] = src.physicalDevices[i];
     }
@@ -6419,14 +6661,16 @@
 
 safe_VkPhysicalDeviceGroupProperties::~safe_VkPhysicalDeviceGroupProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceGroupProperties::initialize(const VkPhysicalDeviceGroupProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     physicalDeviceCount = in_struct->physicalDeviceCount;
     subsetAllocation = in_struct->subsetAllocation;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         physicalDevices[i] = in_struct->physicalDevices[i];
     }
@@ -6435,9 +6679,9 @@
 void safe_VkPhysicalDeviceGroupProperties::initialize(const safe_VkPhysicalDeviceGroupProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     physicalDeviceCount = src->physicalDeviceCount;
     subsetAllocation = src->subsetAllocation;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         physicalDevices[i] = src->physicalDevices[i];
     }
@@ -6445,10 +6689,10 @@
 
 safe_VkDeviceGroupDeviceCreateInfo::safe_VkDeviceGroupDeviceCreateInfo(const VkDeviceGroupDeviceCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     physicalDeviceCount(in_struct->physicalDeviceCount),
     pPhysicalDevices(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPhysicalDevices) {
         pPhysicalDevices = new VkPhysicalDevice[in_struct->physicalDeviceCount];
         memcpy ((void *)pPhysicalDevices, (void *)in_struct->pPhysicalDevices, sizeof(VkPhysicalDevice)*in_struct->physicalDeviceCount);
@@ -6462,9 +6706,9 @@
 safe_VkDeviceGroupDeviceCreateInfo::safe_VkDeviceGroupDeviceCreateInfo(const safe_VkDeviceGroupDeviceCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     physicalDeviceCount = src.physicalDeviceCount;
     pPhysicalDevices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPhysicalDevices) {
         pPhysicalDevices = new VkPhysicalDevice[src.physicalDeviceCount];
         memcpy ((void *)pPhysicalDevices, (void *)src.pPhysicalDevices, sizeof(VkPhysicalDevice)*src.physicalDeviceCount);
@@ -6477,11 +6721,13 @@
 
     if (pPhysicalDevices)
         delete[] pPhysicalDevices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     physicalDeviceCount = src.physicalDeviceCount;
     pPhysicalDevices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPhysicalDevices) {
         pPhysicalDevices = new VkPhysicalDevice[src.physicalDeviceCount];
         memcpy ((void *)pPhysicalDevices, (void *)src.pPhysicalDevices, sizeof(VkPhysicalDevice)*src.physicalDeviceCount);
@@ -6494,14 +6740,16 @@
 {
     if (pPhysicalDevices)
         delete[] pPhysicalDevices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupDeviceCreateInfo::initialize(const VkDeviceGroupDeviceCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     physicalDeviceCount = in_struct->physicalDeviceCount;
     pPhysicalDevices = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPhysicalDevices) {
         pPhysicalDevices = new VkPhysicalDevice[in_struct->physicalDeviceCount];
         memcpy ((void *)pPhysicalDevices, (void *)in_struct->pPhysicalDevices, sizeof(VkPhysicalDevice)*in_struct->physicalDeviceCount);
@@ -6511,9 +6759,9 @@
 void safe_VkDeviceGroupDeviceCreateInfo::initialize(const safe_VkDeviceGroupDeviceCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     physicalDeviceCount = src->physicalDeviceCount;
     pPhysicalDevices = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pPhysicalDevices) {
         pPhysicalDevices = new VkPhysicalDevice[src->physicalDeviceCount];
         memcpy ((void *)pPhysicalDevices, (void *)src->pPhysicalDevices, sizeof(VkPhysicalDevice)*src->physicalDeviceCount);
@@ -6522,9 +6770,9 @@
 
 safe_VkBufferMemoryRequirementsInfo2::safe_VkBufferMemoryRequirementsInfo2(const VkBufferMemoryRequirementsInfo2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     buffer(in_struct->buffer)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBufferMemoryRequirementsInfo2::safe_VkBufferMemoryRequirementsInfo2()
@@ -6533,45 +6781,49 @@
 safe_VkBufferMemoryRequirementsInfo2::safe_VkBufferMemoryRequirementsInfo2(const safe_VkBufferMemoryRequirementsInfo2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBufferMemoryRequirementsInfo2& safe_VkBufferMemoryRequirementsInfo2::operator=(const safe_VkBufferMemoryRequirementsInfo2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBufferMemoryRequirementsInfo2::~safe_VkBufferMemoryRequirementsInfo2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBufferMemoryRequirementsInfo2::initialize(const VkBufferMemoryRequirementsInfo2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     buffer = in_struct->buffer;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBufferMemoryRequirementsInfo2::initialize(const safe_VkBufferMemoryRequirementsInfo2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     buffer = src->buffer;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageMemoryRequirementsInfo2::safe_VkImageMemoryRequirementsInfo2(const VkImageMemoryRequirementsInfo2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     image(in_struct->image)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageMemoryRequirementsInfo2::safe_VkImageMemoryRequirementsInfo2()
@@ -6580,45 +6832,49 @@
 safe_VkImageMemoryRequirementsInfo2::safe_VkImageMemoryRequirementsInfo2(const safe_VkImageMemoryRequirementsInfo2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageMemoryRequirementsInfo2& safe_VkImageMemoryRequirementsInfo2::operator=(const safe_VkImageMemoryRequirementsInfo2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageMemoryRequirementsInfo2::~safe_VkImageMemoryRequirementsInfo2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageMemoryRequirementsInfo2::initialize(const VkImageMemoryRequirementsInfo2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     image = in_struct->image;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageMemoryRequirementsInfo2::initialize(const safe_VkImageMemoryRequirementsInfo2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     image = src->image;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageSparseMemoryRequirementsInfo2::safe_VkImageSparseMemoryRequirementsInfo2(const VkImageSparseMemoryRequirementsInfo2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     image(in_struct->image)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageSparseMemoryRequirementsInfo2::safe_VkImageSparseMemoryRequirementsInfo2()
@@ -6627,45 +6883,49 @@
 safe_VkImageSparseMemoryRequirementsInfo2::safe_VkImageSparseMemoryRequirementsInfo2(const safe_VkImageSparseMemoryRequirementsInfo2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageSparseMemoryRequirementsInfo2& safe_VkImageSparseMemoryRequirementsInfo2::operator=(const safe_VkImageSparseMemoryRequirementsInfo2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageSparseMemoryRequirementsInfo2::~safe_VkImageSparseMemoryRequirementsInfo2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageSparseMemoryRequirementsInfo2::initialize(const VkImageSparseMemoryRequirementsInfo2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     image = in_struct->image;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageSparseMemoryRequirementsInfo2::initialize(const safe_VkImageSparseMemoryRequirementsInfo2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     image = src->image;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryRequirements2::safe_VkMemoryRequirements2(const VkMemoryRequirements2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryRequirements(in_struct->memoryRequirements)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryRequirements2::safe_VkMemoryRequirements2()
@@ -6674,45 +6934,49 @@
 safe_VkMemoryRequirements2::safe_VkMemoryRequirements2(const safe_VkMemoryRequirements2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryRequirements = src.memoryRequirements;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryRequirements2& safe_VkMemoryRequirements2::operator=(const safe_VkMemoryRequirements2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryRequirements = src.memoryRequirements;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryRequirements2::~safe_VkMemoryRequirements2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryRequirements2::initialize(const VkMemoryRequirements2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryRequirements = in_struct->memoryRequirements;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryRequirements2::initialize(const safe_VkMemoryRequirements2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryRequirements = src->memoryRequirements;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSparseImageMemoryRequirements2::safe_VkSparseImageMemoryRequirements2(const VkSparseImageMemoryRequirements2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryRequirements(in_struct->memoryRequirements)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSparseImageMemoryRequirements2::safe_VkSparseImageMemoryRequirements2()
@@ -6721,45 +6985,49 @@
 safe_VkSparseImageMemoryRequirements2::safe_VkSparseImageMemoryRequirements2(const safe_VkSparseImageMemoryRequirements2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryRequirements = src.memoryRequirements;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSparseImageMemoryRequirements2& safe_VkSparseImageMemoryRequirements2::operator=(const safe_VkSparseImageMemoryRequirements2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryRequirements = src.memoryRequirements;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSparseImageMemoryRequirements2::~safe_VkSparseImageMemoryRequirements2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSparseImageMemoryRequirements2::initialize(const VkSparseImageMemoryRequirements2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryRequirements = in_struct->memoryRequirements;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSparseImageMemoryRequirements2::initialize(const safe_VkSparseImageMemoryRequirements2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryRequirements = src->memoryRequirements;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceFeatures2::safe_VkPhysicalDeviceFeatures2(const VkPhysicalDeviceFeatures2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     features(in_struct->features)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFeatures2::safe_VkPhysicalDeviceFeatures2()
@@ -6768,45 +7036,49 @@
 safe_VkPhysicalDeviceFeatures2::safe_VkPhysicalDeviceFeatures2(const safe_VkPhysicalDeviceFeatures2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     features = src.features;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFeatures2& safe_VkPhysicalDeviceFeatures2::operator=(const safe_VkPhysicalDeviceFeatures2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     features = src.features;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFeatures2::~safe_VkPhysicalDeviceFeatures2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFeatures2::initialize(const VkPhysicalDeviceFeatures2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     features = in_struct->features;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFeatures2::initialize(const safe_VkPhysicalDeviceFeatures2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     features = src->features;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceProperties2::safe_VkPhysicalDeviceProperties2(const VkPhysicalDeviceProperties2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     properties(in_struct->properties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceProperties2::safe_VkPhysicalDeviceProperties2()
@@ -6815,45 +7087,49 @@
 safe_VkPhysicalDeviceProperties2::safe_VkPhysicalDeviceProperties2(const safe_VkPhysicalDeviceProperties2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     properties = src.properties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceProperties2& safe_VkPhysicalDeviceProperties2::operator=(const safe_VkPhysicalDeviceProperties2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     properties = src.properties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceProperties2::~safe_VkPhysicalDeviceProperties2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceProperties2::initialize(const VkPhysicalDeviceProperties2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     properties = in_struct->properties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceProperties2::initialize(const safe_VkPhysicalDeviceProperties2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     properties = src->properties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkFormatProperties2::safe_VkFormatProperties2(const VkFormatProperties2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     formatProperties(in_struct->formatProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkFormatProperties2::safe_VkFormatProperties2()
@@ -6862,45 +7138,49 @@
 safe_VkFormatProperties2::safe_VkFormatProperties2(const safe_VkFormatProperties2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     formatProperties = src.formatProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkFormatProperties2& safe_VkFormatProperties2::operator=(const safe_VkFormatProperties2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     formatProperties = src.formatProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkFormatProperties2::~safe_VkFormatProperties2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFormatProperties2::initialize(const VkFormatProperties2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     formatProperties = in_struct->formatProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkFormatProperties2::initialize(const safe_VkFormatProperties2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     formatProperties = src->formatProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageFormatProperties2::safe_VkImageFormatProperties2(const VkImageFormatProperties2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     imageFormatProperties(in_struct->imageFormatProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageFormatProperties2::safe_VkImageFormatProperties2()
@@ -6909,49 +7189,53 @@
 safe_VkImageFormatProperties2::safe_VkImageFormatProperties2(const safe_VkImageFormatProperties2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     imageFormatProperties = src.imageFormatProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageFormatProperties2& safe_VkImageFormatProperties2::operator=(const safe_VkImageFormatProperties2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     imageFormatProperties = src.imageFormatProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageFormatProperties2::~safe_VkImageFormatProperties2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageFormatProperties2::initialize(const VkImageFormatProperties2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     imageFormatProperties = in_struct->imageFormatProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageFormatProperties2::initialize(const safe_VkImageFormatProperties2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     imageFormatProperties = src->imageFormatProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceImageFormatInfo2::safe_VkPhysicalDeviceImageFormatInfo2(const VkPhysicalDeviceImageFormatInfo2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     format(in_struct->format),
     type(in_struct->type),
     tiling(in_struct->tiling),
     usage(in_struct->usage),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceImageFormatInfo2::safe_VkPhysicalDeviceImageFormatInfo2()
@@ -6960,61 +7244,65 @@
 safe_VkPhysicalDeviceImageFormatInfo2::safe_VkPhysicalDeviceImageFormatInfo2(const safe_VkPhysicalDeviceImageFormatInfo2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     type = src.type;
     tiling = src.tiling;
     usage = src.usage;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceImageFormatInfo2& safe_VkPhysicalDeviceImageFormatInfo2::operator=(const safe_VkPhysicalDeviceImageFormatInfo2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     type = src.type;
     tiling = src.tiling;
     usage = src.usage;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceImageFormatInfo2::~safe_VkPhysicalDeviceImageFormatInfo2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceImageFormatInfo2::initialize(const VkPhysicalDeviceImageFormatInfo2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     format = in_struct->format;
     type = in_struct->type;
     tiling = in_struct->tiling;
     usage = in_struct->usage;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceImageFormatInfo2::initialize(const safe_VkPhysicalDeviceImageFormatInfo2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     format = src->format;
     type = src->type;
     tiling = src->tiling;
     usage = src->usage;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkQueueFamilyProperties2::safe_VkQueueFamilyProperties2(const VkQueueFamilyProperties2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     queueFamilyProperties(in_struct->queueFamilyProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkQueueFamilyProperties2::safe_VkQueueFamilyProperties2()
@@ -7023,45 +7311,49 @@
 safe_VkQueueFamilyProperties2::safe_VkQueueFamilyProperties2(const safe_VkQueueFamilyProperties2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     queueFamilyProperties = src.queueFamilyProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkQueueFamilyProperties2& safe_VkQueueFamilyProperties2::operator=(const safe_VkQueueFamilyProperties2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     queueFamilyProperties = src.queueFamilyProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkQueueFamilyProperties2::~safe_VkQueueFamilyProperties2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkQueueFamilyProperties2::initialize(const VkQueueFamilyProperties2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     queueFamilyProperties = in_struct->queueFamilyProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkQueueFamilyProperties2::initialize(const safe_VkQueueFamilyProperties2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     queueFamilyProperties = src->queueFamilyProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceMemoryProperties2::safe_VkPhysicalDeviceMemoryProperties2(const VkPhysicalDeviceMemoryProperties2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryProperties(in_struct->memoryProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMemoryProperties2::safe_VkPhysicalDeviceMemoryProperties2()
@@ -7070,45 +7362,49 @@
 safe_VkPhysicalDeviceMemoryProperties2::safe_VkPhysicalDeviceMemoryProperties2(const safe_VkPhysicalDeviceMemoryProperties2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryProperties = src.memoryProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMemoryProperties2& safe_VkPhysicalDeviceMemoryProperties2::operator=(const safe_VkPhysicalDeviceMemoryProperties2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryProperties = src.memoryProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMemoryProperties2::~safe_VkPhysicalDeviceMemoryProperties2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMemoryProperties2::initialize(const VkPhysicalDeviceMemoryProperties2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryProperties = in_struct->memoryProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMemoryProperties2::initialize(const safe_VkPhysicalDeviceMemoryProperties2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryProperties = src->memoryProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSparseImageFormatProperties2::safe_VkSparseImageFormatProperties2(const VkSparseImageFormatProperties2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     properties(in_struct->properties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSparseImageFormatProperties2::safe_VkSparseImageFormatProperties2()
@@ -7117,49 +7413,53 @@
 safe_VkSparseImageFormatProperties2::safe_VkSparseImageFormatProperties2(const safe_VkSparseImageFormatProperties2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     properties = src.properties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSparseImageFormatProperties2& safe_VkSparseImageFormatProperties2::operator=(const safe_VkSparseImageFormatProperties2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     properties = src.properties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSparseImageFormatProperties2::~safe_VkSparseImageFormatProperties2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSparseImageFormatProperties2::initialize(const VkSparseImageFormatProperties2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     properties = in_struct->properties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSparseImageFormatProperties2::initialize(const safe_VkSparseImageFormatProperties2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     properties = src->properties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceSparseImageFormatInfo2::safe_VkPhysicalDeviceSparseImageFormatInfo2(const VkPhysicalDeviceSparseImageFormatInfo2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     format(in_struct->format),
     type(in_struct->type),
     samples(in_struct->samples),
     usage(in_struct->usage),
     tiling(in_struct->tiling)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceSparseImageFormatInfo2::safe_VkPhysicalDeviceSparseImageFormatInfo2()
@@ -7168,61 +7468,65 @@
 safe_VkPhysicalDeviceSparseImageFormatInfo2::safe_VkPhysicalDeviceSparseImageFormatInfo2(const safe_VkPhysicalDeviceSparseImageFormatInfo2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     type = src.type;
     samples = src.samples;
     usage = src.usage;
     tiling = src.tiling;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceSparseImageFormatInfo2& safe_VkPhysicalDeviceSparseImageFormatInfo2::operator=(const safe_VkPhysicalDeviceSparseImageFormatInfo2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     type = src.type;
     samples = src.samples;
     usage = src.usage;
     tiling = src.tiling;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceSparseImageFormatInfo2::~safe_VkPhysicalDeviceSparseImageFormatInfo2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceSparseImageFormatInfo2::initialize(const VkPhysicalDeviceSparseImageFormatInfo2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     format = in_struct->format;
     type = in_struct->type;
     samples = in_struct->samples;
     usage = in_struct->usage;
     tiling = in_struct->tiling;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceSparseImageFormatInfo2::initialize(const safe_VkPhysicalDeviceSparseImageFormatInfo2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     format = src->format;
     type = src->type;
     samples = src->samples;
     usage = src->usage;
     tiling = src->tiling;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDevicePointClippingProperties::safe_VkPhysicalDevicePointClippingProperties(const VkPhysicalDevicePointClippingProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pointClippingBehavior(in_struct->pointClippingBehavior)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDevicePointClippingProperties::safe_VkPhysicalDevicePointClippingProperties()
@@ -7231,46 +7535,50 @@
 safe_VkPhysicalDevicePointClippingProperties::safe_VkPhysicalDevicePointClippingProperties(const safe_VkPhysicalDevicePointClippingProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pointClippingBehavior = src.pointClippingBehavior;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDevicePointClippingProperties& safe_VkPhysicalDevicePointClippingProperties::operator=(const safe_VkPhysicalDevicePointClippingProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pointClippingBehavior = src.pointClippingBehavior;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDevicePointClippingProperties::~safe_VkPhysicalDevicePointClippingProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDevicePointClippingProperties::initialize(const VkPhysicalDevicePointClippingProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pointClippingBehavior = in_struct->pointClippingBehavior;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDevicePointClippingProperties::initialize(const safe_VkPhysicalDevicePointClippingProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pointClippingBehavior = src->pointClippingBehavior;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkRenderPassInputAttachmentAspectCreateInfo::safe_VkRenderPassInputAttachmentAspectCreateInfo(const VkRenderPassInputAttachmentAspectCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     aspectReferenceCount(in_struct->aspectReferenceCount),
     pAspectReferences(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAspectReferences) {
         pAspectReferences = new VkInputAttachmentAspectReference[in_struct->aspectReferenceCount];
         memcpy ((void *)pAspectReferences, (void *)in_struct->pAspectReferences, sizeof(VkInputAttachmentAspectReference)*in_struct->aspectReferenceCount);
@@ -7284,9 +7592,9 @@
 safe_VkRenderPassInputAttachmentAspectCreateInfo::safe_VkRenderPassInputAttachmentAspectCreateInfo(const safe_VkRenderPassInputAttachmentAspectCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     aspectReferenceCount = src.aspectReferenceCount;
     pAspectReferences = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAspectReferences) {
         pAspectReferences = new VkInputAttachmentAspectReference[src.aspectReferenceCount];
         memcpy ((void *)pAspectReferences, (void *)src.pAspectReferences, sizeof(VkInputAttachmentAspectReference)*src.aspectReferenceCount);
@@ -7299,11 +7607,13 @@
 
     if (pAspectReferences)
         delete[] pAspectReferences;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     aspectReferenceCount = src.aspectReferenceCount;
     pAspectReferences = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAspectReferences) {
         pAspectReferences = new VkInputAttachmentAspectReference[src.aspectReferenceCount];
         memcpy ((void *)pAspectReferences, (void *)src.pAspectReferences, sizeof(VkInputAttachmentAspectReference)*src.aspectReferenceCount);
@@ -7316,14 +7626,16 @@
 {
     if (pAspectReferences)
         delete[] pAspectReferences;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassInputAttachmentAspectCreateInfo::initialize(const VkRenderPassInputAttachmentAspectCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     aspectReferenceCount = in_struct->aspectReferenceCount;
     pAspectReferences = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAspectReferences) {
         pAspectReferences = new VkInputAttachmentAspectReference[in_struct->aspectReferenceCount];
         memcpy ((void *)pAspectReferences, (void *)in_struct->pAspectReferences, sizeof(VkInputAttachmentAspectReference)*in_struct->aspectReferenceCount);
@@ -7333,9 +7645,9 @@
 void safe_VkRenderPassInputAttachmentAspectCreateInfo::initialize(const safe_VkRenderPassInputAttachmentAspectCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     aspectReferenceCount = src->aspectReferenceCount;
     pAspectReferences = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAspectReferences) {
         pAspectReferences = new VkInputAttachmentAspectReference[src->aspectReferenceCount];
         memcpy ((void *)pAspectReferences, (void *)src->pAspectReferences, sizeof(VkInputAttachmentAspectReference)*src->aspectReferenceCount);
@@ -7344,9 +7656,9 @@
 
 safe_VkImageViewUsageCreateInfo::safe_VkImageViewUsageCreateInfo(const VkImageViewUsageCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     usage(in_struct->usage)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageViewUsageCreateInfo::safe_VkImageViewUsageCreateInfo()
@@ -7355,45 +7667,49 @@
 safe_VkImageViewUsageCreateInfo::safe_VkImageViewUsageCreateInfo(const safe_VkImageViewUsageCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     usage = src.usage;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageViewUsageCreateInfo& safe_VkImageViewUsageCreateInfo::operator=(const safe_VkImageViewUsageCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     usage = src.usage;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageViewUsageCreateInfo::~safe_VkImageViewUsageCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageViewUsageCreateInfo::initialize(const VkImageViewUsageCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     usage = in_struct->usage;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageViewUsageCreateInfo::initialize(const safe_VkImageViewUsageCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     usage = src->usage;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineTessellationDomainOriginStateCreateInfo::safe_VkPipelineTessellationDomainOriginStateCreateInfo(const VkPipelineTessellationDomainOriginStateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     domainOrigin(in_struct->domainOrigin)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineTessellationDomainOriginStateCreateInfo::safe_VkPipelineTessellationDomainOriginStateCreateInfo()
@@ -7402,43 +7718,46 @@
 safe_VkPipelineTessellationDomainOriginStateCreateInfo::safe_VkPipelineTessellationDomainOriginStateCreateInfo(const safe_VkPipelineTessellationDomainOriginStateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     domainOrigin = src.domainOrigin;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineTessellationDomainOriginStateCreateInfo& safe_VkPipelineTessellationDomainOriginStateCreateInfo::operator=(const safe_VkPipelineTessellationDomainOriginStateCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     domainOrigin = src.domainOrigin;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineTessellationDomainOriginStateCreateInfo::~safe_VkPipelineTessellationDomainOriginStateCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineTessellationDomainOriginStateCreateInfo::initialize(const VkPipelineTessellationDomainOriginStateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     domainOrigin = in_struct->domainOrigin;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineTessellationDomainOriginStateCreateInfo::initialize(const safe_VkPipelineTessellationDomainOriginStateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     domainOrigin = src->domainOrigin;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkRenderPassMultiviewCreateInfo::safe_VkRenderPassMultiviewCreateInfo(const VkRenderPassMultiviewCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     subpassCount(in_struct->subpassCount),
     pViewMasks(nullptr),
     dependencyCount(in_struct->dependencyCount),
@@ -7446,6 +7765,7 @@
     correlationMaskCount(in_struct->correlationMaskCount),
     pCorrelationMasks(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewMasks) {
         pViewMasks = new uint32_t[in_struct->subpassCount];
         memcpy ((void *)pViewMasks, (void *)in_struct->pViewMasks, sizeof(uint32_t)*in_struct->subpassCount);
@@ -7469,13 +7789,13 @@
 safe_VkRenderPassMultiviewCreateInfo::safe_VkRenderPassMultiviewCreateInfo(const safe_VkRenderPassMultiviewCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     subpassCount = src.subpassCount;
     pViewMasks = nullptr;
     dependencyCount = src.dependencyCount;
     pViewOffsets = nullptr;
     correlationMaskCount = src.correlationMaskCount;
     pCorrelationMasks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewMasks) {
         pViewMasks = new uint32_t[src.subpassCount];
         memcpy ((void *)pViewMasks, (void *)src.pViewMasks, sizeof(uint32_t)*src.subpassCount);
@@ -7500,15 +7820,17 @@
         delete[] pViewOffsets;
     if (pCorrelationMasks)
         delete[] pCorrelationMasks;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     subpassCount = src.subpassCount;
     pViewMasks = nullptr;
     dependencyCount = src.dependencyCount;
     pViewOffsets = nullptr;
     correlationMaskCount = src.correlationMaskCount;
     pCorrelationMasks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewMasks) {
         pViewMasks = new uint32_t[src.subpassCount];
         memcpy ((void *)pViewMasks, (void *)src.pViewMasks, sizeof(uint32_t)*src.subpassCount);
@@ -7533,18 +7855,20 @@
         delete[] pViewOffsets;
     if (pCorrelationMasks)
         delete[] pCorrelationMasks;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassMultiviewCreateInfo::initialize(const VkRenderPassMultiviewCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     subpassCount = in_struct->subpassCount;
     pViewMasks = nullptr;
     dependencyCount = in_struct->dependencyCount;
     pViewOffsets = nullptr;
     correlationMaskCount = in_struct->correlationMaskCount;
     pCorrelationMasks = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewMasks) {
         pViewMasks = new uint32_t[in_struct->subpassCount];
         memcpy ((void *)pViewMasks, (void *)in_struct->pViewMasks, sizeof(uint32_t)*in_struct->subpassCount);
@@ -7562,13 +7886,13 @@
 void safe_VkRenderPassMultiviewCreateInfo::initialize(const safe_VkRenderPassMultiviewCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     subpassCount = src->subpassCount;
     pViewMasks = nullptr;
     dependencyCount = src->dependencyCount;
     pViewOffsets = nullptr;
     correlationMaskCount = src->correlationMaskCount;
     pCorrelationMasks = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pViewMasks) {
         pViewMasks = new uint32_t[src->subpassCount];
         memcpy ((void *)pViewMasks, (void *)src->pViewMasks, sizeof(uint32_t)*src->subpassCount);
@@ -7585,11 +7909,11 @@
 
 safe_VkPhysicalDeviceMultiviewFeatures::safe_VkPhysicalDeviceMultiviewFeatures(const VkPhysicalDeviceMultiviewFeatures* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     multiview(in_struct->multiview),
     multiviewGeometryShader(in_struct->multiviewGeometryShader),
     multiviewTessellationShader(in_struct->multiviewTessellationShader)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewFeatures::safe_VkPhysicalDeviceMultiviewFeatures()
@@ -7598,54 +7922,58 @@
 safe_VkPhysicalDeviceMultiviewFeatures::safe_VkPhysicalDeviceMultiviewFeatures(const safe_VkPhysicalDeviceMultiviewFeatures& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     multiview = src.multiview;
     multiviewGeometryShader = src.multiviewGeometryShader;
     multiviewTessellationShader = src.multiviewTessellationShader;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewFeatures& safe_VkPhysicalDeviceMultiviewFeatures::operator=(const safe_VkPhysicalDeviceMultiviewFeatures& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     multiview = src.multiview;
     multiviewGeometryShader = src.multiviewGeometryShader;
     multiviewTessellationShader = src.multiviewTessellationShader;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMultiviewFeatures::~safe_VkPhysicalDeviceMultiviewFeatures()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMultiviewFeatures::initialize(const VkPhysicalDeviceMultiviewFeatures* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     multiview = in_struct->multiview;
     multiviewGeometryShader = in_struct->multiviewGeometryShader;
     multiviewTessellationShader = in_struct->multiviewTessellationShader;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMultiviewFeatures::initialize(const safe_VkPhysicalDeviceMultiviewFeatures* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     multiview = src->multiview;
     multiviewGeometryShader = src->multiviewGeometryShader;
     multiviewTessellationShader = src->multiviewTessellationShader;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewProperties::safe_VkPhysicalDeviceMultiviewProperties(const VkPhysicalDeviceMultiviewProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxMultiviewViewCount(in_struct->maxMultiviewViewCount),
     maxMultiviewInstanceIndex(in_struct->maxMultiviewInstanceIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewProperties::safe_VkPhysicalDeviceMultiviewProperties()
@@ -7654,50 +7982,54 @@
 safe_VkPhysicalDeviceMultiviewProperties::safe_VkPhysicalDeviceMultiviewProperties(const safe_VkPhysicalDeviceMultiviewProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxMultiviewViewCount = src.maxMultiviewViewCount;
     maxMultiviewInstanceIndex = src.maxMultiviewInstanceIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewProperties& safe_VkPhysicalDeviceMultiviewProperties::operator=(const safe_VkPhysicalDeviceMultiviewProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxMultiviewViewCount = src.maxMultiviewViewCount;
     maxMultiviewInstanceIndex = src.maxMultiviewInstanceIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMultiviewProperties::~safe_VkPhysicalDeviceMultiviewProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMultiviewProperties::initialize(const VkPhysicalDeviceMultiviewProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxMultiviewViewCount = in_struct->maxMultiviewViewCount;
     maxMultiviewInstanceIndex = in_struct->maxMultiviewInstanceIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMultiviewProperties::initialize(const safe_VkPhysicalDeviceMultiviewProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxMultiviewViewCount = src->maxMultiviewViewCount;
     maxMultiviewInstanceIndex = src->maxMultiviewInstanceIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceVariablePointersFeatures::safe_VkPhysicalDeviceVariablePointersFeatures(const VkPhysicalDeviceVariablePointersFeatures* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     variablePointersStorageBuffer(in_struct->variablePointersStorageBuffer),
     variablePointers(in_struct->variablePointers)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceVariablePointersFeatures::safe_VkPhysicalDeviceVariablePointersFeatures()
@@ -7706,49 +8038,53 @@
 safe_VkPhysicalDeviceVariablePointersFeatures::safe_VkPhysicalDeviceVariablePointersFeatures(const safe_VkPhysicalDeviceVariablePointersFeatures& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     variablePointersStorageBuffer = src.variablePointersStorageBuffer;
     variablePointers = src.variablePointers;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceVariablePointersFeatures& safe_VkPhysicalDeviceVariablePointersFeatures::operator=(const safe_VkPhysicalDeviceVariablePointersFeatures& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     variablePointersStorageBuffer = src.variablePointersStorageBuffer;
     variablePointers = src.variablePointers;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceVariablePointersFeatures::~safe_VkPhysicalDeviceVariablePointersFeatures()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceVariablePointersFeatures::initialize(const VkPhysicalDeviceVariablePointersFeatures* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     variablePointersStorageBuffer = in_struct->variablePointersStorageBuffer;
     variablePointers = in_struct->variablePointers;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceVariablePointersFeatures::initialize(const safe_VkPhysicalDeviceVariablePointersFeatures* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     variablePointersStorageBuffer = src->variablePointersStorageBuffer;
     variablePointers = src->variablePointers;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceProtectedMemoryFeatures::safe_VkPhysicalDeviceProtectedMemoryFeatures(const VkPhysicalDeviceProtectedMemoryFeatures* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     protectedMemory(in_struct->protectedMemory)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceProtectedMemoryFeatures::safe_VkPhysicalDeviceProtectedMemoryFeatures()
@@ -7757,45 +8093,49 @@
 safe_VkPhysicalDeviceProtectedMemoryFeatures::safe_VkPhysicalDeviceProtectedMemoryFeatures(const safe_VkPhysicalDeviceProtectedMemoryFeatures& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     protectedMemory = src.protectedMemory;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceProtectedMemoryFeatures& safe_VkPhysicalDeviceProtectedMemoryFeatures::operator=(const safe_VkPhysicalDeviceProtectedMemoryFeatures& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     protectedMemory = src.protectedMemory;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceProtectedMemoryFeatures::~safe_VkPhysicalDeviceProtectedMemoryFeatures()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceProtectedMemoryFeatures::initialize(const VkPhysicalDeviceProtectedMemoryFeatures* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     protectedMemory = in_struct->protectedMemory;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceProtectedMemoryFeatures::initialize(const safe_VkPhysicalDeviceProtectedMemoryFeatures* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     protectedMemory = src->protectedMemory;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceProtectedMemoryProperties::safe_VkPhysicalDeviceProtectedMemoryProperties(const VkPhysicalDeviceProtectedMemoryProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     protectedNoFault(in_struct->protectedNoFault)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceProtectedMemoryProperties::safe_VkPhysicalDeviceProtectedMemoryProperties()
@@ -7804,47 +8144,51 @@
 safe_VkPhysicalDeviceProtectedMemoryProperties::safe_VkPhysicalDeviceProtectedMemoryProperties(const safe_VkPhysicalDeviceProtectedMemoryProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     protectedNoFault = src.protectedNoFault;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceProtectedMemoryProperties& safe_VkPhysicalDeviceProtectedMemoryProperties::operator=(const safe_VkPhysicalDeviceProtectedMemoryProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     protectedNoFault = src.protectedNoFault;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceProtectedMemoryProperties::~safe_VkPhysicalDeviceProtectedMemoryProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceProtectedMemoryProperties::initialize(const VkPhysicalDeviceProtectedMemoryProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     protectedNoFault = in_struct->protectedNoFault;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceProtectedMemoryProperties::initialize(const safe_VkPhysicalDeviceProtectedMemoryProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     protectedNoFault = src->protectedNoFault;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceQueueInfo2::safe_VkDeviceQueueInfo2(const VkDeviceQueueInfo2* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     queueFamilyIndex(in_struct->queueFamilyIndex),
     queueIndex(in_struct->queueIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceQueueInfo2::safe_VkDeviceQueueInfo2()
@@ -7853,53 +8197,57 @@
 safe_VkDeviceQueueInfo2::safe_VkDeviceQueueInfo2(const safe_VkDeviceQueueInfo2& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueFamilyIndex = src.queueFamilyIndex;
     queueIndex = src.queueIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceQueueInfo2& safe_VkDeviceQueueInfo2::operator=(const safe_VkDeviceQueueInfo2& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     queueFamilyIndex = src.queueFamilyIndex;
     queueIndex = src.queueIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceQueueInfo2::~safe_VkDeviceQueueInfo2()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceQueueInfo2::initialize(const VkDeviceQueueInfo2* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     queueFamilyIndex = in_struct->queueFamilyIndex;
     queueIndex = in_struct->queueIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceQueueInfo2::initialize(const safe_VkDeviceQueueInfo2* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     queueFamilyIndex = src->queueFamilyIndex;
     queueIndex = src->queueIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkProtectedSubmitInfo::safe_VkProtectedSubmitInfo(const VkProtectedSubmitInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     protectedSubmit(in_struct->protectedSubmit)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkProtectedSubmitInfo::safe_VkProtectedSubmitInfo()
@@ -7908,43 +8256,46 @@
 safe_VkProtectedSubmitInfo::safe_VkProtectedSubmitInfo(const safe_VkProtectedSubmitInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     protectedSubmit = src.protectedSubmit;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkProtectedSubmitInfo& safe_VkProtectedSubmitInfo::operator=(const safe_VkProtectedSubmitInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     protectedSubmit = src.protectedSubmit;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkProtectedSubmitInfo::~safe_VkProtectedSubmitInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkProtectedSubmitInfo::initialize(const VkProtectedSubmitInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     protectedSubmit = in_struct->protectedSubmit;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkProtectedSubmitInfo::initialize(const safe_VkProtectedSubmitInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     protectedSubmit = src->protectedSubmit;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSamplerYcbcrConversionCreateInfo::safe_VkSamplerYcbcrConversionCreateInfo(const VkSamplerYcbcrConversionCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     format(in_struct->format),
     ycbcrModel(in_struct->ycbcrModel),
     ycbcrRange(in_struct->ycbcrRange),
@@ -7954,6 +8305,7 @@
     chromaFilter(in_struct->chromaFilter),
     forceExplicitReconstruction(in_struct->forceExplicitReconstruction)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSamplerYcbcrConversionCreateInfo::safe_VkSamplerYcbcrConversionCreateInfo()
@@ -7962,7 +8314,6 @@
 safe_VkSamplerYcbcrConversionCreateInfo::safe_VkSamplerYcbcrConversionCreateInfo(const safe_VkSamplerYcbcrConversionCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     ycbcrModel = src.ycbcrModel;
     ycbcrRange = src.ycbcrRange;
@@ -7971,15 +8322,17 @@
     yChromaOffset = src.yChromaOffset;
     chromaFilter = src.chromaFilter;
     forceExplicitReconstruction = src.forceExplicitReconstruction;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSamplerYcbcrConversionCreateInfo& safe_VkSamplerYcbcrConversionCreateInfo::operator=(const safe_VkSamplerYcbcrConversionCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     ycbcrModel = src.ycbcrModel;
     ycbcrRange = src.ycbcrRange;
@@ -7988,18 +8341,20 @@
     yChromaOffset = src.yChromaOffset;
     chromaFilter = src.chromaFilter;
     forceExplicitReconstruction = src.forceExplicitReconstruction;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSamplerYcbcrConversionCreateInfo::~safe_VkSamplerYcbcrConversionCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSamplerYcbcrConversionCreateInfo::initialize(const VkSamplerYcbcrConversionCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     format = in_struct->format;
     ycbcrModel = in_struct->ycbcrModel;
     ycbcrRange = in_struct->ycbcrRange;
@@ -8008,12 +8363,12 @@
     yChromaOffset = in_struct->yChromaOffset;
     chromaFilter = in_struct->chromaFilter;
     forceExplicitReconstruction = in_struct->forceExplicitReconstruction;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSamplerYcbcrConversionCreateInfo::initialize(const safe_VkSamplerYcbcrConversionCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     format = src->format;
     ycbcrModel = src->ycbcrModel;
     ycbcrRange = src->ycbcrRange;
@@ -8022,13 +8377,14 @@
     yChromaOffset = src->yChromaOffset;
     chromaFilter = src->chromaFilter;
     forceExplicitReconstruction = src->forceExplicitReconstruction;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSamplerYcbcrConversionInfo::safe_VkSamplerYcbcrConversionInfo(const VkSamplerYcbcrConversionInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     conversion(in_struct->conversion)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSamplerYcbcrConversionInfo::safe_VkSamplerYcbcrConversionInfo()
@@ -8037,45 +8393,49 @@
 safe_VkSamplerYcbcrConversionInfo::safe_VkSamplerYcbcrConversionInfo(const safe_VkSamplerYcbcrConversionInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     conversion = src.conversion;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSamplerYcbcrConversionInfo& safe_VkSamplerYcbcrConversionInfo::operator=(const safe_VkSamplerYcbcrConversionInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     conversion = src.conversion;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSamplerYcbcrConversionInfo::~safe_VkSamplerYcbcrConversionInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSamplerYcbcrConversionInfo::initialize(const VkSamplerYcbcrConversionInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     conversion = in_struct->conversion;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSamplerYcbcrConversionInfo::initialize(const safe_VkSamplerYcbcrConversionInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     conversion = src->conversion;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBindImagePlaneMemoryInfo::safe_VkBindImagePlaneMemoryInfo(const VkBindImagePlaneMemoryInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     planeAspect(in_struct->planeAspect)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBindImagePlaneMemoryInfo::safe_VkBindImagePlaneMemoryInfo()
@@ -8084,45 +8444,49 @@
 safe_VkBindImagePlaneMemoryInfo::safe_VkBindImagePlaneMemoryInfo(const safe_VkBindImagePlaneMemoryInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     planeAspect = src.planeAspect;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBindImagePlaneMemoryInfo& safe_VkBindImagePlaneMemoryInfo::operator=(const safe_VkBindImagePlaneMemoryInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     planeAspect = src.planeAspect;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBindImagePlaneMemoryInfo::~safe_VkBindImagePlaneMemoryInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindImagePlaneMemoryInfo::initialize(const VkBindImagePlaneMemoryInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     planeAspect = in_struct->planeAspect;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBindImagePlaneMemoryInfo::initialize(const safe_VkBindImagePlaneMemoryInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     planeAspect = src->planeAspect;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImagePlaneMemoryRequirementsInfo::safe_VkImagePlaneMemoryRequirementsInfo(const VkImagePlaneMemoryRequirementsInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     planeAspect(in_struct->planeAspect)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImagePlaneMemoryRequirementsInfo::safe_VkImagePlaneMemoryRequirementsInfo()
@@ -8131,45 +8495,49 @@
 safe_VkImagePlaneMemoryRequirementsInfo::safe_VkImagePlaneMemoryRequirementsInfo(const safe_VkImagePlaneMemoryRequirementsInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     planeAspect = src.planeAspect;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImagePlaneMemoryRequirementsInfo& safe_VkImagePlaneMemoryRequirementsInfo::operator=(const safe_VkImagePlaneMemoryRequirementsInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     planeAspect = src.planeAspect;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImagePlaneMemoryRequirementsInfo::~safe_VkImagePlaneMemoryRequirementsInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImagePlaneMemoryRequirementsInfo::initialize(const VkImagePlaneMemoryRequirementsInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     planeAspect = in_struct->planeAspect;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImagePlaneMemoryRequirementsInfo::initialize(const safe_VkImagePlaneMemoryRequirementsInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     planeAspect = src->planeAspect;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures(const VkPhysicalDeviceSamplerYcbcrConversionFeatures* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     samplerYcbcrConversion(in_struct->samplerYcbcrConversion)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures()
@@ -8178,45 +8546,49 @@
 safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures(const safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     samplerYcbcrConversion = src.samplerYcbcrConversion;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures& safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::operator=(const safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     samplerYcbcrConversion = src.samplerYcbcrConversion;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::~safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::initialize(const VkPhysicalDeviceSamplerYcbcrConversionFeatures* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     samplerYcbcrConversion = in_struct->samplerYcbcrConversion;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures::initialize(const safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     samplerYcbcrConversion = src->samplerYcbcrConversion;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSamplerYcbcrConversionImageFormatProperties::safe_VkSamplerYcbcrConversionImageFormatProperties(const VkSamplerYcbcrConversionImageFormatProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     combinedImageSamplerDescriptorCount(in_struct->combinedImageSamplerDescriptorCount)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSamplerYcbcrConversionImageFormatProperties::safe_VkSamplerYcbcrConversionImageFormatProperties()
@@ -8225,43 +8597,46 @@
 safe_VkSamplerYcbcrConversionImageFormatProperties::safe_VkSamplerYcbcrConversionImageFormatProperties(const safe_VkSamplerYcbcrConversionImageFormatProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     combinedImageSamplerDescriptorCount = src.combinedImageSamplerDescriptorCount;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSamplerYcbcrConversionImageFormatProperties& safe_VkSamplerYcbcrConversionImageFormatProperties::operator=(const safe_VkSamplerYcbcrConversionImageFormatProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     combinedImageSamplerDescriptorCount = src.combinedImageSamplerDescriptorCount;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSamplerYcbcrConversionImageFormatProperties::~safe_VkSamplerYcbcrConversionImageFormatProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSamplerYcbcrConversionImageFormatProperties::initialize(const VkSamplerYcbcrConversionImageFormatProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     combinedImageSamplerDescriptorCount = in_struct->combinedImageSamplerDescriptorCount;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSamplerYcbcrConversionImageFormatProperties::initialize(const safe_VkSamplerYcbcrConversionImageFormatProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     combinedImageSamplerDescriptorCount = src->combinedImageSamplerDescriptorCount;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDescriptorUpdateTemplateCreateInfo::safe_VkDescriptorUpdateTemplateCreateInfo(const VkDescriptorUpdateTemplateCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     descriptorUpdateEntryCount(in_struct->descriptorUpdateEntryCount),
     pDescriptorUpdateEntries(nullptr),
@@ -8271,6 +8646,7 @@
     pipelineLayout(in_struct->pipelineLayout),
     set(in_struct->set)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDescriptorUpdateEntries) {
         pDescriptorUpdateEntries = new VkDescriptorUpdateTemplateEntry[in_struct->descriptorUpdateEntryCount];
         memcpy ((void *)pDescriptorUpdateEntries, (void *)in_struct->pDescriptorUpdateEntries, sizeof(VkDescriptorUpdateTemplateEntry)*in_struct->descriptorUpdateEntryCount);
@@ -8284,7 +8660,6 @@
 safe_VkDescriptorUpdateTemplateCreateInfo::safe_VkDescriptorUpdateTemplateCreateInfo(const safe_VkDescriptorUpdateTemplateCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     descriptorUpdateEntryCount = src.descriptorUpdateEntryCount;
     pDescriptorUpdateEntries = nullptr;
@@ -8293,6 +8668,7 @@
     pipelineBindPoint = src.pipelineBindPoint;
     pipelineLayout = src.pipelineLayout;
     set = src.set;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDescriptorUpdateEntries) {
         pDescriptorUpdateEntries = new VkDescriptorUpdateTemplateEntry[src.descriptorUpdateEntryCount];
         memcpy ((void *)pDescriptorUpdateEntries, (void *)src.pDescriptorUpdateEntries, sizeof(VkDescriptorUpdateTemplateEntry)*src.descriptorUpdateEntryCount);
@@ -8305,9 +8681,10 @@
 
     if (pDescriptorUpdateEntries)
         delete[] pDescriptorUpdateEntries;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     descriptorUpdateEntryCount = src.descriptorUpdateEntryCount;
     pDescriptorUpdateEntries = nullptr;
@@ -8316,6 +8693,7 @@
     pipelineBindPoint = src.pipelineBindPoint;
     pipelineLayout = src.pipelineLayout;
     set = src.set;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDescriptorUpdateEntries) {
         pDescriptorUpdateEntries = new VkDescriptorUpdateTemplateEntry[src.descriptorUpdateEntryCount];
         memcpy ((void *)pDescriptorUpdateEntries, (void *)src.pDescriptorUpdateEntries, sizeof(VkDescriptorUpdateTemplateEntry)*src.descriptorUpdateEntryCount);
@@ -8328,12 +8706,13 @@
 {
     if (pDescriptorUpdateEntries)
         delete[] pDescriptorUpdateEntries;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorUpdateTemplateCreateInfo::initialize(const VkDescriptorUpdateTemplateCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     descriptorUpdateEntryCount = in_struct->descriptorUpdateEntryCount;
     pDescriptorUpdateEntries = nullptr;
@@ -8342,6 +8721,7 @@
     pipelineBindPoint = in_struct->pipelineBindPoint;
     pipelineLayout = in_struct->pipelineLayout;
     set = in_struct->set;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDescriptorUpdateEntries) {
         pDescriptorUpdateEntries = new VkDescriptorUpdateTemplateEntry[in_struct->descriptorUpdateEntryCount];
         memcpy ((void *)pDescriptorUpdateEntries, (void *)in_struct->pDescriptorUpdateEntries, sizeof(VkDescriptorUpdateTemplateEntry)*in_struct->descriptorUpdateEntryCount);
@@ -8351,7 +8731,6 @@
 void safe_VkDescriptorUpdateTemplateCreateInfo::initialize(const safe_VkDescriptorUpdateTemplateCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     descriptorUpdateEntryCount = src->descriptorUpdateEntryCount;
     pDescriptorUpdateEntries = nullptr;
@@ -8360,6 +8739,7 @@
     pipelineBindPoint = src->pipelineBindPoint;
     pipelineLayout = src->pipelineLayout;
     set = src->set;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDescriptorUpdateEntries) {
         pDescriptorUpdateEntries = new VkDescriptorUpdateTemplateEntry[src->descriptorUpdateEntryCount];
         memcpy ((void *)pDescriptorUpdateEntries, (void *)src->pDescriptorUpdateEntries, sizeof(VkDescriptorUpdateTemplateEntry)*src->descriptorUpdateEntryCount);
@@ -8368,9 +8748,9 @@
 
 safe_VkPhysicalDeviceExternalImageFormatInfo::safe_VkPhysicalDeviceExternalImageFormatInfo(const VkPhysicalDeviceExternalImageFormatInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceExternalImageFormatInfo::safe_VkPhysicalDeviceExternalImageFormatInfo()
@@ -8379,45 +8759,49 @@
 safe_VkPhysicalDeviceExternalImageFormatInfo::safe_VkPhysicalDeviceExternalImageFormatInfo(const safe_VkPhysicalDeviceExternalImageFormatInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceExternalImageFormatInfo& safe_VkPhysicalDeviceExternalImageFormatInfo::operator=(const safe_VkPhysicalDeviceExternalImageFormatInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceExternalImageFormatInfo::~safe_VkPhysicalDeviceExternalImageFormatInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceExternalImageFormatInfo::initialize(const VkPhysicalDeviceExternalImageFormatInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceExternalImageFormatInfo::initialize(const safe_VkPhysicalDeviceExternalImageFormatInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExternalImageFormatProperties::safe_VkExternalImageFormatProperties(const VkExternalImageFormatProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     externalMemoryProperties(in_struct->externalMemoryProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalImageFormatProperties::safe_VkExternalImageFormatProperties()
@@ -8426,47 +8810,51 @@
 safe_VkExternalImageFormatProperties::safe_VkExternalImageFormatProperties(const safe_VkExternalImageFormatProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     externalMemoryProperties = src.externalMemoryProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalImageFormatProperties& safe_VkExternalImageFormatProperties::operator=(const safe_VkExternalImageFormatProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     externalMemoryProperties = src.externalMemoryProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalImageFormatProperties::~safe_VkExternalImageFormatProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalImageFormatProperties::initialize(const VkExternalImageFormatProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     externalMemoryProperties = in_struct->externalMemoryProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalImageFormatProperties::initialize(const safe_VkExternalImageFormatProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     externalMemoryProperties = src->externalMemoryProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceExternalBufferInfo::safe_VkPhysicalDeviceExternalBufferInfo(const VkPhysicalDeviceExternalBufferInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     usage(in_struct->usage),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceExternalBufferInfo::safe_VkPhysicalDeviceExternalBufferInfo()
@@ -8475,53 +8863,57 @@
 safe_VkPhysicalDeviceExternalBufferInfo::safe_VkPhysicalDeviceExternalBufferInfo(const safe_VkPhysicalDeviceExternalBufferInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     usage = src.usage;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceExternalBufferInfo& safe_VkPhysicalDeviceExternalBufferInfo::operator=(const safe_VkPhysicalDeviceExternalBufferInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     usage = src.usage;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceExternalBufferInfo::~safe_VkPhysicalDeviceExternalBufferInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceExternalBufferInfo::initialize(const VkPhysicalDeviceExternalBufferInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     usage = in_struct->usage;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceExternalBufferInfo::initialize(const safe_VkPhysicalDeviceExternalBufferInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     usage = src->usage;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExternalBufferProperties::safe_VkExternalBufferProperties(const VkExternalBufferProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     externalMemoryProperties(in_struct->externalMemoryProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalBufferProperties::safe_VkExternalBufferProperties()
@@ -8530,46 +8922,50 @@
 safe_VkExternalBufferProperties::safe_VkExternalBufferProperties(const safe_VkExternalBufferProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     externalMemoryProperties = src.externalMemoryProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalBufferProperties& safe_VkExternalBufferProperties::operator=(const safe_VkExternalBufferProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     externalMemoryProperties = src.externalMemoryProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalBufferProperties::~safe_VkExternalBufferProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalBufferProperties::initialize(const VkExternalBufferProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     externalMemoryProperties = in_struct->externalMemoryProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalBufferProperties::initialize(const safe_VkExternalBufferProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     externalMemoryProperties = src->externalMemoryProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceIDProperties::safe_VkPhysicalDeviceIDProperties(const VkPhysicalDeviceIDProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceNodeMask(in_struct->deviceNodeMask),
     deviceLUIDValid(in_struct->deviceLUIDValid)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_UUID_SIZE; ++i) {
         deviceUUID[i] = in_struct->deviceUUID[i];
     }
@@ -8587,9 +8983,9 @@
 safe_VkPhysicalDeviceIDProperties::safe_VkPhysicalDeviceIDProperties(const safe_VkPhysicalDeviceIDProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceNodeMask = src.deviceNodeMask;
     deviceLUIDValid = src.deviceLUIDValid;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_UUID_SIZE; ++i) {
         deviceUUID[i] = src.deviceUUID[i];
     }
@@ -8605,11 +9001,13 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceNodeMask = src.deviceNodeMask;
     deviceLUIDValid = src.deviceLUIDValid;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_UUID_SIZE; ++i) {
         deviceUUID[i] = src.deviceUUID[i];
     }
@@ -8625,14 +9023,16 @@
 
 safe_VkPhysicalDeviceIDProperties::~safe_VkPhysicalDeviceIDProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceIDProperties::initialize(const VkPhysicalDeviceIDProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceNodeMask = in_struct->deviceNodeMask;
     deviceLUIDValid = in_struct->deviceLUIDValid;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_UUID_SIZE; ++i) {
         deviceUUID[i] = in_struct->deviceUUID[i];
     }
@@ -8647,9 +9047,9 @@
 void safe_VkPhysicalDeviceIDProperties::initialize(const safe_VkPhysicalDeviceIDProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceNodeMask = src->deviceNodeMask;
     deviceLUIDValid = src->deviceLUIDValid;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<VK_UUID_SIZE; ++i) {
         deviceUUID[i] = src->deviceUUID[i];
     }
@@ -8663,9 +9063,9 @@
 
 safe_VkExternalMemoryImageCreateInfo::safe_VkExternalMemoryImageCreateInfo(const VkExternalMemoryImageCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalMemoryImageCreateInfo::safe_VkExternalMemoryImageCreateInfo()
@@ -8674,45 +9074,49 @@
 safe_VkExternalMemoryImageCreateInfo::safe_VkExternalMemoryImageCreateInfo(const safe_VkExternalMemoryImageCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalMemoryImageCreateInfo& safe_VkExternalMemoryImageCreateInfo::operator=(const safe_VkExternalMemoryImageCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalMemoryImageCreateInfo::~safe_VkExternalMemoryImageCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalMemoryImageCreateInfo::initialize(const VkExternalMemoryImageCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalMemoryImageCreateInfo::initialize(const safe_VkExternalMemoryImageCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExternalMemoryBufferCreateInfo::safe_VkExternalMemoryBufferCreateInfo(const VkExternalMemoryBufferCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalMemoryBufferCreateInfo::safe_VkExternalMemoryBufferCreateInfo()
@@ -8721,45 +9125,49 @@
 safe_VkExternalMemoryBufferCreateInfo::safe_VkExternalMemoryBufferCreateInfo(const safe_VkExternalMemoryBufferCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalMemoryBufferCreateInfo& safe_VkExternalMemoryBufferCreateInfo::operator=(const safe_VkExternalMemoryBufferCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalMemoryBufferCreateInfo::~safe_VkExternalMemoryBufferCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalMemoryBufferCreateInfo::initialize(const VkExternalMemoryBufferCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalMemoryBufferCreateInfo::initialize(const safe_VkExternalMemoryBufferCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExportMemoryAllocateInfo::safe_VkExportMemoryAllocateInfo(const VkExportMemoryAllocateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExportMemoryAllocateInfo::safe_VkExportMemoryAllocateInfo()
@@ -8768,45 +9176,49 @@
 safe_VkExportMemoryAllocateInfo::safe_VkExportMemoryAllocateInfo(const safe_VkExportMemoryAllocateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExportMemoryAllocateInfo& safe_VkExportMemoryAllocateInfo::operator=(const safe_VkExportMemoryAllocateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExportMemoryAllocateInfo::~safe_VkExportMemoryAllocateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportMemoryAllocateInfo::initialize(const VkExportMemoryAllocateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExportMemoryAllocateInfo::initialize(const safe_VkExportMemoryAllocateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceExternalFenceInfo::safe_VkPhysicalDeviceExternalFenceInfo(const VkPhysicalDeviceExternalFenceInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceExternalFenceInfo::safe_VkPhysicalDeviceExternalFenceInfo()
@@ -8815,47 +9227,51 @@
 safe_VkPhysicalDeviceExternalFenceInfo::safe_VkPhysicalDeviceExternalFenceInfo(const safe_VkPhysicalDeviceExternalFenceInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceExternalFenceInfo& safe_VkPhysicalDeviceExternalFenceInfo::operator=(const safe_VkPhysicalDeviceExternalFenceInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceExternalFenceInfo::~safe_VkPhysicalDeviceExternalFenceInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceExternalFenceInfo::initialize(const VkPhysicalDeviceExternalFenceInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceExternalFenceInfo::initialize(const safe_VkPhysicalDeviceExternalFenceInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExternalFenceProperties::safe_VkExternalFenceProperties(const VkExternalFenceProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     exportFromImportedHandleTypes(in_struct->exportFromImportedHandleTypes),
     compatibleHandleTypes(in_struct->compatibleHandleTypes),
     externalFenceFeatures(in_struct->externalFenceFeatures)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalFenceProperties::safe_VkExternalFenceProperties()
@@ -8864,53 +9280,57 @@
 safe_VkExternalFenceProperties::safe_VkExternalFenceProperties(const safe_VkExternalFenceProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     exportFromImportedHandleTypes = src.exportFromImportedHandleTypes;
     compatibleHandleTypes = src.compatibleHandleTypes;
     externalFenceFeatures = src.externalFenceFeatures;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalFenceProperties& safe_VkExternalFenceProperties::operator=(const safe_VkExternalFenceProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     exportFromImportedHandleTypes = src.exportFromImportedHandleTypes;
     compatibleHandleTypes = src.compatibleHandleTypes;
     externalFenceFeatures = src.externalFenceFeatures;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalFenceProperties::~safe_VkExternalFenceProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalFenceProperties::initialize(const VkExternalFenceProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     exportFromImportedHandleTypes = in_struct->exportFromImportedHandleTypes;
     compatibleHandleTypes = in_struct->compatibleHandleTypes;
     externalFenceFeatures = in_struct->externalFenceFeatures;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalFenceProperties::initialize(const safe_VkExternalFenceProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     exportFromImportedHandleTypes = src->exportFromImportedHandleTypes;
     compatibleHandleTypes = src->compatibleHandleTypes;
     externalFenceFeatures = src->externalFenceFeatures;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExportFenceCreateInfo::safe_VkExportFenceCreateInfo(const VkExportFenceCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExportFenceCreateInfo::safe_VkExportFenceCreateInfo()
@@ -8919,45 +9339,49 @@
 safe_VkExportFenceCreateInfo::safe_VkExportFenceCreateInfo(const safe_VkExportFenceCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExportFenceCreateInfo& safe_VkExportFenceCreateInfo::operator=(const safe_VkExportFenceCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExportFenceCreateInfo::~safe_VkExportFenceCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportFenceCreateInfo::initialize(const VkExportFenceCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExportFenceCreateInfo::initialize(const safe_VkExportFenceCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExportSemaphoreCreateInfo::safe_VkExportSemaphoreCreateInfo(const VkExportSemaphoreCreateInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExportSemaphoreCreateInfo::safe_VkExportSemaphoreCreateInfo()
@@ -8966,45 +9390,49 @@
 safe_VkExportSemaphoreCreateInfo::safe_VkExportSemaphoreCreateInfo(const safe_VkExportSemaphoreCreateInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExportSemaphoreCreateInfo& safe_VkExportSemaphoreCreateInfo::operator=(const safe_VkExportSemaphoreCreateInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExportSemaphoreCreateInfo::~safe_VkExportSemaphoreCreateInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportSemaphoreCreateInfo::initialize(const VkExportSemaphoreCreateInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExportSemaphoreCreateInfo::initialize(const safe_VkExportSemaphoreCreateInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceExternalSemaphoreInfo::safe_VkPhysicalDeviceExternalSemaphoreInfo(const VkPhysicalDeviceExternalSemaphoreInfo* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceExternalSemaphoreInfo::safe_VkPhysicalDeviceExternalSemaphoreInfo()
@@ -9013,47 +9441,51 @@
 safe_VkPhysicalDeviceExternalSemaphoreInfo::safe_VkPhysicalDeviceExternalSemaphoreInfo(const safe_VkPhysicalDeviceExternalSemaphoreInfo& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceExternalSemaphoreInfo& safe_VkPhysicalDeviceExternalSemaphoreInfo::operator=(const safe_VkPhysicalDeviceExternalSemaphoreInfo& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceExternalSemaphoreInfo::~safe_VkPhysicalDeviceExternalSemaphoreInfo()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceExternalSemaphoreInfo::initialize(const VkPhysicalDeviceExternalSemaphoreInfo* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceExternalSemaphoreInfo::initialize(const safe_VkPhysicalDeviceExternalSemaphoreInfo* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExternalSemaphoreProperties::safe_VkExternalSemaphoreProperties(const VkExternalSemaphoreProperties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     exportFromImportedHandleTypes(in_struct->exportFromImportedHandleTypes),
     compatibleHandleTypes(in_struct->compatibleHandleTypes),
     externalSemaphoreFeatures(in_struct->externalSemaphoreFeatures)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalSemaphoreProperties::safe_VkExternalSemaphoreProperties()
@@ -9062,54 +9494,58 @@
 safe_VkExternalSemaphoreProperties::safe_VkExternalSemaphoreProperties(const safe_VkExternalSemaphoreProperties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     exportFromImportedHandleTypes = src.exportFromImportedHandleTypes;
     compatibleHandleTypes = src.compatibleHandleTypes;
     externalSemaphoreFeatures = src.externalSemaphoreFeatures;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalSemaphoreProperties& safe_VkExternalSemaphoreProperties::operator=(const safe_VkExternalSemaphoreProperties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     exportFromImportedHandleTypes = src.exportFromImportedHandleTypes;
     compatibleHandleTypes = src.compatibleHandleTypes;
     externalSemaphoreFeatures = src.externalSemaphoreFeatures;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalSemaphoreProperties::~safe_VkExternalSemaphoreProperties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalSemaphoreProperties::initialize(const VkExternalSemaphoreProperties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     exportFromImportedHandleTypes = in_struct->exportFromImportedHandleTypes;
     compatibleHandleTypes = in_struct->compatibleHandleTypes;
     externalSemaphoreFeatures = in_struct->externalSemaphoreFeatures;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalSemaphoreProperties::initialize(const safe_VkExternalSemaphoreProperties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     exportFromImportedHandleTypes = src->exportFromImportedHandleTypes;
     compatibleHandleTypes = src->compatibleHandleTypes;
     externalSemaphoreFeatures = src->externalSemaphoreFeatures;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceMaintenance3Properties::safe_VkPhysicalDeviceMaintenance3Properties(const VkPhysicalDeviceMaintenance3Properties* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxPerSetDescriptors(in_struct->maxPerSetDescriptors),
     maxMemoryAllocationSize(in_struct->maxMemoryAllocationSize)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMaintenance3Properties::safe_VkPhysicalDeviceMaintenance3Properties()
@@ -9118,49 +9554,53 @@
 safe_VkPhysicalDeviceMaintenance3Properties::safe_VkPhysicalDeviceMaintenance3Properties(const safe_VkPhysicalDeviceMaintenance3Properties& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxPerSetDescriptors = src.maxPerSetDescriptors;
     maxMemoryAllocationSize = src.maxMemoryAllocationSize;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMaintenance3Properties& safe_VkPhysicalDeviceMaintenance3Properties::operator=(const safe_VkPhysicalDeviceMaintenance3Properties& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxPerSetDescriptors = src.maxPerSetDescriptors;
     maxMemoryAllocationSize = src.maxMemoryAllocationSize;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMaintenance3Properties::~safe_VkPhysicalDeviceMaintenance3Properties()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMaintenance3Properties::initialize(const VkPhysicalDeviceMaintenance3Properties* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxPerSetDescriptors = in_struct->maxPerSetDescriptors;
     maxMemoryAllocationSize = in_struct->maxMemoryAllocationSize;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMaintenance3Properties::initialize(const safe_VkPhysicalDeviceMaintenance3Properties* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxPerSetDescriptors = src->maxPerSetDescriptors;
     maxMemoryAllocationSize = src->maxMemoryAllocationSize;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDescriptorSetLayoutSupport::safe_VkDescriptorSetLayoutSupport(const VkDescriptorSetLayoutSupport* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     supported(in_struct->supported)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDescriptorSetLayoutSupport::safe_VkDescriptorSetLayoutSupport()
@@ -9169,45 +9609,49 @@
 safe_VkDescriptorSetLayoutSupport::safe_VkDescriptorSetLayoutSupport(const safe_VkDescriptorSetLayoutSupport& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     supported = src.supported;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDescriptorSetLayoutSupport& safe_VkDescriptorSetLayoutSupport::operator=(const safe_VkDescriptorSetLayoutSupport& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     supported = src.supported;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDescriptorSetLayoutSupport::~safe_VkDescriptorSetLayoutSupport()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorSetLayoutSupport::initialize(const VkDescriptorSetLayoutSupport* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     supported = in_struct->supported;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDescriptorSetLayoutSupport::initialize(const safe_VkDescriptorSetLayoutSupport* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     supported = src->supported;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderDrawParametersFeatures::safe_VkPhysicalDeviceShaderDrawParametersFeatures(const VkPhysicalDeviceShaderDrawParametersFeatures* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderDrawParameters(in_struct->shaderDrawParameters)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderDrawParametersFeatures::safe_VkPhysicalDeviceShaderDrawParametersFeatures()
@@ -9216,43 +9660,46 @@
 safe_VkPhysicalDeviceShaderDrawParametersFeatures::safe_VkPhysicalDeviceShaderDrawParametersFeatures(const safe_VkPhysicalDeviceShaderDrawParametersFeatures& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderDrawParameters = src.shaderDrawParameters;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderDrawParametersFeatures& safe_VkPhysicalDeviceShaderDrawParametersFeatures::operator=(const safe_VkPhysicalDeviceShaderDrawParametersFeatures& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderDrawParameters = src.shaderDrawParameters;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderDrawParametersFeatures::~safe_VkPhysicalDeviceShaderDrawParametersFeatures()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderDrawParametersFeatures::initialize(const VkPhysicalDeviceShaderDrawParametersFeatures* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderDrawParameters = in_struct->shaderDrawParameters;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderDrawParametersFeatures::initialize(const safe_VkPhysicalDeviceShaderDrawParametersFeatures* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderDrawParameters = src->shaderDrawParameters;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSwapchainCreateInfoKHR::safe_VkSwapchainCreateInfoKHR(const VkSwapchainCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     surface(in_struct->surface),
     minImageCount(in_struct->minImageCount),
@@ -9270,6 +9717,7 @@
     clipped(in_struct->clipped),
     oldSwapchain(in_struct->oldSwapchain)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -9283,7 +9731,6 @@
 safe_VkSwapchainCreateInfoKHR::safe_VkSwapchainCreateInfoKHR(const safe_VkSwapchainCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     surface = src.surface;
     minImageCount = src.minImageCount;
@@ -9300,6 +9747,7 @@
     presentMode = src.presentMode;
     clipped = src.clipped;
     oldSwapchain = src.oldSwapchain;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -9312,9 +9760,10 @@
 
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     surface = src.surface;
     minImageCount = src.minImageCount;
@@ -9331,6 +9780,7 @@
     presentMode = src.presentMode;
     clipped = src.clipped;
     oldSwapchain = src.oldSwapchain;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -9343,12 +9793,13 @@
 {
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSwapchainCreateInfoKHR::initialize(const VkSwapchainCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     surface = in_struct->surface;
     minImageCount = in_struct->minImageCount;
@@ -9365,6 +9816,7 @@
     presentMode = in_struct->presentMode;
     clipped = in_struct->clipped;
     oldSwapchain = in_struct->oldSwapchain;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -9374,7 +9826,6 @@
 void safe_VkSwapchainCreateInfoKHR::initialize(const safe_VkSwapchainCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     surface = src->surface;
     minImageCount = src->minImageCount;
@@ -9391,6 +9842,7 @@
     presentMode = src->presentMode;
     clipped = src->clipped;
     oldSwapchain = src->oldSwapchain;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src->pQueueFamilyIndices, sizeof(uint32_t)*src->queueFamilyIndexCount);
@@ -9399,7 +9851,6 @@
 
 safe_VkPresentInfoKHR::safe_VkPresentInfoKHR(const VkPresentInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     waitSemaphoreCount(in_struct->waitSemaphoreCount),
     pWaitSemaphores(nullptr),
     swapchainCount(in_struct->swapchainCount),
@@ -9407,6 +9858,7 @@
     pImageIndices(nullptr),
     pResults(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (waitSemaphoreCount && in_struct->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -9439,13 +9891,13 @@
 safe_VkPresentInfoKHR::safe_VkPresentInfoKHR(const safe_VkPresentInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     swapchainCount = src.swapchainCount;
     pSwapchains = nullptr;
     pImageIndices = nullptr;
     pResults = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (waitSemaphoreCount && src.pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -9480,15 +9932,17 @@
         delete[] pImageIndices;
     if (pResults)
         delete[] pResults;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreCount = src.waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     swapchainCount = src.swapchainCount;
     pSwapchains = nullptr;
     pImageIndices = nullptr;
     pResults = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (waitSemaphoreCount && src.pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -9523,18 +9977,20 @@
         delete[] pImageIndices;
     if (pResults)
         delete[] pResults;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPresentInfoKHR::initialize(const VkPresentInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     waitSemaphoreCount = in_struct->waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     swapchainCount = in_struct->swapchainCount;
     pSwapchains = nullptr;
     pImageIndices = nullptr;
     pResults = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (waitSemaphoreCount && in_struct->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -9560,13 +10016,13 @@
 void safe_VkPresentInfoKHR::initialize(const safe_VkPresentInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     waitSemaphoreCount = src->waitSemaphoreCount;
     pWaitSemaphores = nullptr;
     swapchainCount = src->swapchainCount;
     pSwapchains = nullptr;
     pImageIndices = nullptr;
     pResults = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (waitSemaphoreCount && src->pWaitSemaphores) {
         pWaitSemaphores = new VkSemaphore[waitSemaphoreCount];
         for (uint32_t i=0; i<waitSemaphoreCount; ++i) {
@@ -9591,9 +10047,9 @@
 
 safe_VkImageSwapchainCreateInfoKHR::safe_VkImageSwapchainCreateInfoKHR(const VkImageSwapchainCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     swapchain(in_struct->swapchain)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageSwapchainCreateInfoKHR::safe_VkImageSwapchainCreateInfoKHR()
@@ -9602,46 +10058,50 @@
 safe_VkImageSwapchainCreateInfoKHR::safe_VkImageSwapchainCreateInfoKHR(const safe_VkImageSwapchainCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     swapchain = src.swapchain;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageSwapchainCreateInfoKHR& safe_VkImageSwapchainCreateInfoKHR::operator=(const safe_VkImageSwapchainCreateInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     swapchain = src.swapchain;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageSwapchainCreateInfoKHR::~safe_VkImageSwapchainCreateInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageSwapchainCreateInfoKHR::initialize(const VkImageSwapchainCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     swapchain = in_struct->swapchain;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageSwapchainCreateInfoKHR::initialize(const safe_VkImageSwapchainCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     swapchain = src->swapchain;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBindImageMemorySwapchainInfoKHR::safe_VkBindImageMemorySwapchainInfoKHR(const VkBindImageMemorySwapchainInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     swapchain(in_struct->swapchain),
     imageIndex(in_struct->imageIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBindImageMemorySwapchainInfoKHR::safe_VkBindImageMemorySwapchainInfoKHR()
@@ -9650,53 +10110,57 @@
 safe_VkBindImageMemorySwapchainInfoKHR::safe_VkBindImageMemorySwapchainInfoKHR(const safe_VkBindImageMemorySwapchainInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     swapchain = src.swapchain;
     imageIndex = src.imageIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBindImageMemorySwapchainInfoKHR& safe_VkBindImageMemorySwapchainInfoKHR::operator=(const safe_VkBindImageMemorySwapchainInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     swapchain = src.swapchain;
     imageIndex = src.imageIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBindImageMemorySwapchainInfoKHR::~safe_VkBindImageMemorySwapchainInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindImageMemorySwapchainInfoKHR::initialize(const VkBindImageMemorySwapchainInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     swapchain = in_struct->swapchain;
     imageIndex = in_struct->imageIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBindImageMemorySwapchainInfoKHR::initialize(const safe_VkBindImageMemorySwapchainInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     swapchain = src->swapchain;
     imageIndex = src->imageIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkAcquireNextImageInfoKHR::safe_VkAcquireNextImageInfoKHR(const VkAcquireNextImageInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     swapchain(in_struct->swapchain),
     timeout(in_struct->timeout),
     semaphore(in_struct->semaphore),
     fence(in_struct->fence),
     deviceMask(in_struct->deviceMask)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAcquireNextImageInfoKHR::safe_VkAcquireNextImageInfoKHR()
@@ -9705,61 +10169,65 @@
 safe_VkAcquireNextImageInfoKHR::safe_VkAcquireNextImageInfoKHR(const safe_VkAcquireNextImageInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     swapchain = src.swapchain;
     timeout = src.timeout;
     semaphore = src.semaphore;
     fence = src.fence;
     deviceMask = src.deviceMask;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAcquireNextImageInfoKHR& safe_VkAcquireNextImageInfoKHR::operator=(const safe_VkAcquireNextImageInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     swapchain = src.swapchain;
     timeout = src.timeout;
     semaphore = src.semaphore;
     fence = src.fence;
     deviceMask = src.deviceMask;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAcquireNextImageInfoKHR::~safe_VkAcquireNextImageInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAcquireNextImageInfoKHR::initialize(const VkAcquireNextImageInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     swapchain = in_struct->swapchain;
     timeout = in_struct->timeout;
     semaphore = in_struct->semaphore;
     fence = in_struct->fence;
     deviceMask = in_struct->deviceMask;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAcquireNextImageInfoKHR::initialize(const safe_VkAcquireNextImageInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     swapchain = src->swapchain;
     timeout = src->timeout;
     semaphore = src->semaphore;
     fence = src->fence;
     deviceMask = src->deviceMask;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceGroupPresentCapabilitiesKHR::safe_VkDeviceGroupPresentCapabilitiesKHR(const VkDeviceGroupPresentCapabilitiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     modes(in_struct->modes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         presentMask[i] = in_struct->presentMask[i];
     }
@@ -9771,8 +10239,8 @@
 safe_VkDeviceGroupPresentCapabilitiesKHR::safe_VkDeviceGroupPresentCapabilitiesKHR(const safe_VkDeviceGroupPresentCapabilitiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     modes = src.modes;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         presentMask[i] = src.presentMask[i];
     }
@@ -9782,10 +10250,12 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     modes = src.modes;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         presentMask[i] = src.presentMask[i];
     }
@@ -9795,13 +10265,15 @@
 
 safe_VkDeviceGroupPresentCapabilitiesKHR::~safe_VkDeviceGroupPresentCapabilitiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupPresentCapabilitiesKHR::initialize(const VkDeviceGroupPresentCapabilitiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     modes = in_struct->modes;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         presentMask[i] = in_struct->presentMask[i];
     }
@@ -9810,8 +10282,8 @@
 void safe_VkDeviceGroupPresentCapabilitiesKHR::initialize(const safe_VkDeviceGroupPresentCapabilitiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     modes = src->modes;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<VK_MAX_DEVICE_GROUP_SIZE; ++i) {
         presentMask[i] = src->presentMask[i];
     }
@@ -9819,11 +10291,11 @@
 
 safe_VkDeviceGroupPresentInfoKHR::safe_VkDeviceGroupPresentInfoKHR(const VkDeviceGroupPresentInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     swapchainCount(in_struct->swapchainCount),
     pDeviceMasks(nullptr),
     mode(in_struct->mode)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceMasks) {
         pDeviceMasks = new uint32_t[in_struct->swapchainCount];
         memcpy ((void *)pDeviceMasks, (void *)in_struct->pDeviceMasks, sizeof(uint32_t)*in_struct->swapchainCount);
@@ -9837,10 +10309,10 @@
 safe_VkDeviceGroupPresentInfoKHR::safe_VkDeviceGroupPresentInfoKHR(const safe_VkDeviceGroupPresentInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     swapchainCount = src.swapchainCount;
     pDeviceMasks = nullptr;
     mode = src.mode;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceMasks) {
         pDeviceMasks = new uint32_t[src.swapchainCount];
         memcpy ((void *)pDeviceMasks, (void *)src.pDeviceMasks, sizeof(uint32_t)*src.swapchainCount);
@@ -9853,12 +10325,14 @@
 
     if (pDeviceMasks)
         delete[] pDeviceMasks;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     swapchainCount = src.swapchainCount;
     pDeviceMasks = nullptr;
     mode = src.mode;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceMasks) {
         pDeviceMasks = new uint32_t[src.swapchainCount];
         memcpy ((void *)pDeviceMasks, (void *)src.pDeviceMasks, sizeof(uint32_t)*src.swapchainCount);
@@ -9871,15 +10345,17 @@
 {
     if (pDeviceMasks)
         delete[] pDeviceMasks;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupPresentInfoKHR::initialize(const VkDeviceGroupPresentInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     swapchainCount = in_struct->swapchainCount;
     pDeviceMasks = nullptr;
     mode = in_struct->mode;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceMasks) {
         pDeviceMasks = new uint32_t[in_struct->swapchainCount];
         memcpy ((void *)pDeviceMasks, (void *)in_struct->pDeviceMasks, sizeof(uint32_t)*in_struct->swapchainCount);
@@ -9889,10 +10365,10 @@
 void safe_VkDeviceGroupPresentInfoKHR::initialize(const safe_VkDeviceGroupPresentInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     swapchainCount = src->swapchainCount;
     pDeviceMasks = nullptr;
     mode = src->mode;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDeviceMasks) {
         pDeviceMasks = new uint32_t[src->swapchainCount];
         memcpy ((void *)pDeviceMasks, (void *)src->pDeviceMasks, sizeof(uint32_t)*src->swapchainCount);
@@ -9901,9 +10377,9 @@
 
 safe_VkDeviceGroupSwapchainCreateInfoKHR::safe_VkDeviceGroupSwapchainCreateInfoKHR(const VkDeviceGroupSwapchainCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     modes(in_struct->modes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceGroupSwapchainCreateInfoKHR::safe_VkDeviceGroupSwapchainCreateInfoKHR()
@@ -9912,38 +10388,42 @@
 safe_VkDeviceGroupSwapchainCreateInfoKHR::safe_VkDeviceGroupSwapchainCreateInfoKHR(const safe_VkDeviceGroupSwapchainCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     modes = src.modes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceGroupSwapchainCreateInfoKHR& safe_VkDeviceGroupSwapchainCreateInfoKHR::operator=(const safe_VkDeviceGroupSwapchainCreateInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     modes = src.modes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceGroupSwapchainCreateInfoKHR::~safe_VkDeviceGroupSwapchainCreateInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGroupSwapchainCreateInfoKHR::initialize(const VkDeviceGroupSwapchainCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     modes = in_struct->modes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceGroupSwapchainCreateInfoKHR::initialize(const safe_VkDeviceGroupSwapchainCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     modes = src->modes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayPropertiesKHR::safe_VkDisplayPropertiesKHR(const VkDisplayPropertiesKHR* in_struct) :
@@ -10015,10 +10495,10 @@
 
 safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR(const VkDisplayModeCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     parameters(in_struct->parameters)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR()
@@ -10027,47 +10507,50 @@
 safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR(const safe_VkDisplayModeCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     parameters = src.parameters;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayModeCreateInfoKHR& safe_VkDisplayModeCreateInfoKHR::operator=(const safe_VkDisplayModeCreateInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     parameters = src.parameters;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayModeCreateInfoKHR::~safe_VkDisplayModeCreateInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayModeCreateInfoKHR::initialize(const VkDisplayModeCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     parameters = in_struct->parameters;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayModeCreateInfoKHR::initialize(const safe_VkDisplayModeCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     parameters = src->parameters;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplaySurfaceCreateInfoKHR::safe_VkDisplaySurfaceCreateInfoKHR(const VkDisplaySurfaceCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     displayMode(in_struct->displayMode),
     planeIndex(in_struct->planeIndex),
@@ -10077,6 +10560,7 @@
     alphaMode(in_struct->alphaMode),
     imageExtent(in_struct->imageExtent)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplaySurfaceCreateInfoKHR::safe_VkDisplaySurfaceCreateInfoKHR()
@@ -10085,7 +10569,6 @@
 safe_VkDisplaySurfaceCreateInfoKHR::safe_VkDisplaySurfaceCreateInfoKHR(const safe_VkDisplaySurfaceCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     displayMode = src.displayMode;
     planeIndex = src.planeIndex;
@@ -10094,15 +10577,17 @@
     globalAlpha = src.globalAlpha;
     alphaMode = src.alphaMode;
     imageExtent = src.imageExtent;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplaySurfaceCreateInfoKHR& safe_VkDisplaySurfaceCreateInfoKHR::operator=(const safe_VkDisplaySurfaceCreateInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     displayMode = src.displayMode;
     planeIndex = src.planeIndex;
@@ -10111,18 +10596,20 @@
     globalAlpha = src.globalAlpha;
     alphaMode = src.alphaMode;
     imageExtent = src.imageExtent;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplaySurfaceCreateInfoKHR::~safe_VkDisplaySurfaceCreateInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplaySurfaceCreateInfoKHR::initialize(const VkDisplaySurfaceCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     displayMode = in_struct->displayMode;
     planeIndex = in_struct->planeIndex;
@@ -10131,12 +10618,12 @@
     globalAlpha = in_struct->globalAlpha;
     alphaMode = in_struct->alphaMode;
     imageExtent = in_struct->imageExtent;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplaySurfaceCreateInfoKHR::initialize(const safe_VkDisplaySurfaceCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     displayMode = src->displayMode;
     planeIndex = src->planeIndex;
@@ -10145,15 +10632,16 @@
     globalAlpha = src->globalAlpha;
     alphaMode = src->alphaMode;
     imageExtent = src->imageExtent;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayPresentInfoKHR::safe_VkDisplayPresentInfoKHR(const VkDisplayPresentInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcRect(in_struct->srcRect),
     dstRect(in_struct->dstRect),
     persistent(in_struct->persistent)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayPresentInfoKHR::safe_VkDisplayPresentInfoKHR()
@@ -10162,57 +10650,61 @@
 safe_VkDisplayPresentInfoKHR::safe_VkDisplayPresentInfoKHR(const safe_VkDisplayPresentInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcRect = src.srcRect;
     dstRect = src.dstRect;
     persistent = src.persistent;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayPresentInfoKHR& safe_VkDisplayPresentInfoKHR::operator=(const safe_VkDisplayPresentInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcRect = src.srcRect;
     dstRect = src.dstRect;
     persistent = src.persistent;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayPresentInfoKHR::~safe_VkDisplayPresentInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayPresentInfoKHR::initialize(const VkDisplayPresentInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcRect = in_struct->srcRect;
     dstRect = in_struct->dstRect;
     persistent = in_struct->persistent;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayPresentInfoKHR::initialize(const safe_VkDisplayPresentInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcRect = src->srcRect;
     dstRect = src->dstRect;
     persistent = src->persistent;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkImportMemoryWin32HandleInfoKHR::safe_VkImportMemoryWin32HandleInfoKHR(const VkImportMemoryWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType),
     handle(in_struct->handle),
     name(in_struct->name)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportMemoryWin32HandleInfoKHR::safe_VkImportMemoryWin32HandleInfoKHR()
@@ -10221,46 +10713,50 @@
 safe_VkImportMemoryWin32HandleInfoKHR::safe_VkImportMemoryWin32HandleInfoKHR(const safe_VkImportMemoryWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     handle = src.handle;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportMemoryWin32HandleInfoKHR& safe_VkImportMemoryWin32HandleInfoKHR::operator=(const safe_VkImportMemoryWin32HandleInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     handle = src.handle;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportMemoryWin32HandleInfoKHR::~safe_VkImportMemoryWin32HandleInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportMemoryWin32HandleInfoKHR::initialize(const VkImportMemoryWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
     handle = in_struct->handle;
     name = in_struct->name;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportMemoryWin32HandleInfoKHR::initialize(const safe_VkImportMemoryWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
     handle = src->handle;
     name = src->name;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -10269,11 +10765,11 @@
 
 safe_VkExportMemoryWin32HandleInfoKHR::safe_VkExportMemoryWin32HandleInfoKHR(const VkExportMemoryWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pAttributes(nullptr),
     dwAccess(in_struct->dwAccess),
     name(in_struct->name)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -10286,10 +10782,10 @@
 safe_VkExportMemoryWin32HandleInfoKHR::safe_VkExportMemoryWin32HandleInfoKHR(const safe_VkExportMemoryWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -10301,12 +10797,14 @@
 
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -10318,15 +10816,17 @@
 {
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportMemoryWin32HandleInfoKHR::initialize(const VkExportMemoryWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pAttributes = nullptr;
     dwAccess = in_struct->dwAccess;
     name = in_struct->name;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -10335,10 +10835,10 @@
 void safe_VkExportMemoryWin32HandleInfoKHR::initialize(const safe_VkExportMemoryWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pAttributes = nullptr;
     dwAccess = src->dwAccess;
     name = src->name;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src->pAttributes);
     }
@@ -10350,9 +10850,9 @@
 
 safe_VkMemoryWin32HandlePropertiesKHR::safe_VkMemoryWin32HandlePropertiesKHR(const VkMemoryWin32HandlePropertiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryTypeBits(in_struct->memoryTypeBits)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryWin32HandlePropertiesKHR::safe_VkMemoryWin32HandlePropertiesKHR()
@@ -10361,38 +10861,42 @@
 safe_VkMemoryWin32HandlePropertiesKHR::safe_VkMemoryWin32HandlePropertiesKHR(const safe_VkMemoryWin32HandlePropertiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryWin32HandlePropertiesKHR& safe_VkMemoryWin32HandlePropertiesKHR::operator=(const safe_VkMemoryWin32HandlePropertiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryWin32HandlePropertiesKHR::~safe_VkMemoryWin32HandlePropertiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryWin32HandlePropertiesKHR::initialize(const VkMemoryWin32HandlePropertiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryTypeBits = in_struct->memoryTypeBits;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryWin32HandlePropertiesKHR::initialize(const safe_VkMemoryWin32HandlePropertiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryTypeBits = src->memoryTypeBits;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -10401,10 +10905,10 @@
 
 safe_VkMemoryGetWin32HandleInfoKHR::safe_VkMemoryGetWin32HandleInfoKHR(const VkMemoryGetWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memory(in_struct->memory),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryGetWin32HandleInfoKHR::safe_VkMemoryGetWin32HandleInfoKHR()
@@ -10413,52 +10917,56 @@
 safe_VkMemoryGetWin32HandleInfoKHR::safe_VkMemoryGetWin32HandleInfoKHR(const safe_VkMemoryGetWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryGetWin32HandleInfoKHR& safe_VkMemoryGetWin32HandleInfoKHR::operator=(const safe_VkMemoryGetWin32HandleInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryGetWin32HandleInfoKHR::~safe_VkMemoryGetWin32HandleInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryGetWin32HandleInfoKHR::initialize(const VkMemoryGetWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memory = in_struct->memory;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryGetWin32HandleInfoKHR::initialize(const safe_VkMemoryGetWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memory = src->memory;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkImportMemoryFdInfoKHR::safe_VkImportMemoryFdInfoKHR(const VkImportMemoryFdInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType),
     fd(in_struct->fd)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportMemoryFdInfoKHR::safe_VkImportMemoryFdInfoKHR()
@@ -10467,49 +10975,53 @@
 safe_VkImportMemoryFdInfoKHR::safe_VkImportMemoryFdInfoKHR(const safe_VkImportMemoryFdInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     fd = src.fd;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportMemoryFdInfoKHR& safe_VkImportMemoryFdInfoKHR::operator=(const safe_VkImportMemoryFdInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     fd = src.fd;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportMemoryFdInfoKHR::~safe_VkImportMemoryFdInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportMemoryFdInfoKHR::initialize(const VkImportMemoryFdInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
     fd = in_struct->fd;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportMemoryFdInfoKHR::initialize(const safe_VkImportMemoryFdInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
     fd = src->fd;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryFdPropertiesKHR::safe_VkMemoryFdPropertiesKHR(const VkMemoryFdPropertiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryTypeBits(in_struct->memoryTypeBits)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryFdPropertiesKHR::safe_VkMemoryFdPropertiesKHR()
@@ -10518,46 +11030,50 @@
 safe_VkMemoryFdPropertiesKHR::safe_VkMemoryFdPropertiesKHR(const safe_VkMemoryFdPropertiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryFdPropertiesKHR& safe_VkMemoryFdPropertiesKHR::operator=(const safe_VkMemoryFdPropertiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryFdPropertiesKHR::~safe_VkMemoryFdPropertiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryFdPropertiesKHR::initialize(const VkMemoryFdPropertiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryTypeBits = in_struct->memoryTypeBits;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryFdPropertiesKHR::initialize(const safe_VkMemoryFdPropertiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryTypeBits = src->memoryTypeBits;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryGetFdInfoKHR::safe_VkMemoryGetFdInfoKHR(const VkMemoryGetFdInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memory(in_struct->memory),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryGetFdInfoKHR::safe_VkMemoryGetFdInfoKHR()
@@ -10566,49 +11082,52 @@
 safe_VkMemoryGetFdInfoKHR::safe_VkMemoryGetFdInfoKHR(const safe_VkMemoryGetFdInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryGetFdInfoKHR& safe_VkMemoryGetFdInfoKHR::operator=(const safe_VkMemoryGetFdInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryGetFdInfoKHR::~safe_VkMemoryGetFdInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryGetFdInfoKHR::initialize(const VkMemoryGetFdInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memory = in_struct->memory;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryGetFdInfoKHR::initialize(const safe_VkMemoryGetFdInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memory = src->memory;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkWin32KeyedMutexAcquireReleaseInfoKHR::safe_VkWin32KeyedMutexAcquireReleaseInfoKHR(const VkWin32KeyedMutexAcquireReleaseInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     acquireCount(in_struct->acquireCount),
     pAcquireSyncs(nullptr),
     pAcquireKeys(nullptr),
@@ -10617,6 +11136,7 @@
     pReleaseSyncs(nullptr),
     pReleaseKeys(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (acquireCount && in_struct->pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -10654,7 +11174,6 @@
 safe_VkWin32KeyedMutexAcquireReleaseInfoKHR::safe_VkWin32KeyedMutexAcquireReleaseInfoKHR(const safe_VkWin32KeyedMutexAcquireReleaseInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     acquireCount = src.acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -10662,6 +11181,7 @@
     releaseCount = src.releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (acquireCount && src.pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -10702,9 +11222,10 @@
         delete[] pReleaseSyncs;
     if (pReleaseKeys)
         delete[] pReleaseKeys;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     acquireCount = src.acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -10712,6 +11233,7 @@
     releaseCount = src.releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (acquireCount && src.pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -10752,12 +11274,13 @@
         delete[] pReleaseSyncs;
     if (pReleaseKeys)
         delete[] pReleaseKeys;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkWin32KeyedMutexAcquireReleaseInfoKHR::initialize(const VkWin32KeyedMutexAcquireReleaseInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     acquireCount = in_struct->acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -10765,6 +11288,7 @@
     releaseCount = in_struct->releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (acquireCount && in_struct->pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -10794,7 +11318,6 @@
 void safe_VkWin32KeyedMutexAcquireReleaseInfoKHR::initialize(const safe_VkWin32KeyedMutexAcquireReleaseInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     acquireCount = src->acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -10802,6 +11325,7 @@
     releaseCount = src->releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (acquireCount && src->pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -10834,13 +11358,13 @@
 
 safe_VkImportSemaphoreWin32HandleInfoKHR::safe_VkImportSemaphoreWin32HandleInfoKHR(const VkImportSemaphoreWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     semaphore(in_struct->semaphore),
     flags(in_struct->flags),
     handleType(in_struct->handleType),
     handle(in_struct->handle),
     name(in_struct->name)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportSemaphoreWin32HandleInfoKHR::safe_VkImportSemaphoreWin32HandleInfoKHR()
@@ -10849,54 +11373,58 @@
 safe_VkImportSemaphoreWin32HandleInfoKHR::safe_VkImportSemaphoreWin32HandleInfoKHR(const safe_VkImportSemaphoreWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     flags = src.flags;
     handleType = src.handleType;
     handle = src.handle;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportSemaphoreWin32HandleInfoKHR& safe_VkImportSemaphoreWin32HandleInfoKHR::operator=(const safe_VkImportSemaphoreWin32HandleInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     flags = src.flags;
     handleType = src.handleType;
     handle = src.handle;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportSemaphoreWin32HandleInfoKHR::~safe_VkImportSemaphoreWin32HandleInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportSemaphoreWin32HandleInfoKHR::initialize(const VkImportSemaphoreWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     semaphore = in_struct->semaphore;
     flags = in_struct->flags;
     handleType = in_struct->handleType;
     handle = in_struct->handle;
     name = in_struct->name;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportSemaphoreWin32HandleInfoKHR::initialize(const safe_VkImportSemaphoreWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     semaphore = src->semaphore;
     flags = src->flags;
     handleType = src->handleType;
     handle = src->handle;
     name = src->name;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -10905,11 +11433,11 @@
 
 safe_VkExportSemaphoreWin32HandleInfoKHR::safe_VkExportSemaphoreWin32HandleInfoKHR(const VkExportSemaphoreWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pAttributes(nullptr),
     dwAccess(in_struct->dwAccess),
     name(in_struct->name)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -10922,10 +11450,10 @@
 safe_VkExportSemaphoreWin32HandleInfoKHR::safe_VkExportSemaphoreWin32HandleInfoKHR(const safe_VkExportSemaphoreWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -10937,12 +11465,14 @@
 
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -10954,15 +11484,17 @@
 {
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportSemaphoreWin32HandleInfoKHR::initialize(const VkExportSemaphoreWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pAttributes = nullptr;
     dwAccess = in_struct->dwAccess;
     name = in_struct->name;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -10971,10 +11503,10 @@
 void safe_VkExportSemaphoreWin32HandleInfoKHR::initialize(const safe_VkExportSemaphoreWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pAttributes = nullptr;
     dwAccess = src->dwAccess;
     name = src->name;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src->pAttributes);
     }
@@ -10986,12 +11518,12 @@
 
 safe_VkD3D12FenceSubmitInfoKHR::safe_VkD3D12FenceSubmitInfoKHR(const VkD3D12FenceSubmitInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     waitSemaphoreValuesCount(in_struct->waitSemaphoreValuesCount),
     pWaitSemaphoreValues(nullptr),
     signalSemaphoreValuesCount(in_struct->signalSemaphoreValuesCount),
     pSignalSemaphoreValues(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pWaitSemaphoreValues) {
         pWaitSemaphoreValues = new uint64_t[in_struct->waitSemaphoreValuesCount];
         memcpy ((void *)pWaitSemaphoreValues, (void *)in_struct->pWaitSemaphoreValues, sizeof(uint64_t)*in_struct->waitSemaphoreValuesCount);
@@ -11010,11 +11542,11 @@
 safe_VkD3D12FenceSubmitInfoKHR::safe_VkD3D12FenceSubmitInfoKHR(const safe_VkD3D12FenceSubmitInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreValuesCount = src.waitSemaphoreValuesCount;
     pWaitSemaphoreValues = nullptr;
     signalSemaphoreValuesCount = src.signalSemaphoreValuesCount;
     pSignalSemaphoreValues = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pWaitSemaphoreValues) {
         pWaitSemaphoreValues = new uint64_t[src.waitSemaphoreValuesCount];
         memcpy ((void *)pWaitSemaphoreValues, (void *)src.pWaitSemaphoreValues, sizeof(uint64_t)*src.waitSemaphoreValuesCount);
@@ -11033,13 +11565,15 @@
         delete[] pWaitSemaphoreValues;
     if (pSignalSemaphoreValues)
         delete[] pSignalSemaphoreValues;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     waitSemaphoreValuesCount = src.waitSemaphoreValuesCount;
     pWaitSemaphoreValues = nullptr;
     signalSemaphoreValuesCount = src.signalSemaphoreValuesCount;
     pSignalSemaphoreValues = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pWaitSemaphoreValues) {
         pWaitSemaphoreValues = new uint64_t[src.waitSemaphoreValuesCount];
         memcpy ((void *)pWaitSemaphoreValues, (void *)src.pWaitSemaphoreValues, sizeof(uint64_t)*src.waitSemaphoreValuesCount);
@@ -11058,16 +11592,18 @@
         delete[] pWaitSemaphoreValues;
     if (pSignalSemaphoreValues)
         delete[] pSignalSemaphoreValues;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkD3D12FenceSubmitInfoKHR::initialize(const VkD3D12FenceSubmitInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     waitSemaphoreValuesCount = in_struct->waitSemaphoreValuesCount;
     pWaitSemaphoreValues = nullptr;
     signalSemaphoreValuesCount = in_struct->signalSemaphoreValuesCount;
     pSignalSemaphoreValues = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pWaitSemaphoreValues) {
         pWaitSemaphoreValues = new uint64_t[in_struct->waitSemaphoreValuesCount];
         memcpy ((void *)pWaitSemaphoreValues, (void *)in_struct->pWaitSemaphoreValues, sizeof(uint64_t)*in_struct->waitSemaphoreValuesCount);
@@ -11081,11 +11617,11 @@
 void safe_VkD3D12FenceSubmitInfoKHR::initialize(const safe_VkD3D12FenceSubmitInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     waitSemaphoreValuesCount = src->waitSemaphoreValuesCount;
     pWaitSemaphoreValues = nullptr;
     signalSemaphoreValuesCount = src->signalSemaphoreValuesCount;
     pSignalSemaphoreValues = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pWaitSemaphoreValues) {
         pWaitSemaphoreValues = new uint64_t[src->waitSemaphoreValuesCount];
         memcpy ((void *)pWaitSemaphoreValues, (void *)src->pWaitSemaphoreValues, sizeof(uint64_t)*src->waitSemaphoreValuesCount);
@@ -11102,10 +11638,10 @@
 
 safe_VkSemaphoreGetWin32HandleInfoKHR::safe_VkSemaphoreGetWin32HandleInfoKHR(const VkSemaphoreGetWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     semaphore(in_struct->semaphore),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSemaphoreGetWin32HandleInfoKHR::safe_VkSemaphoreGetWin32HandleInfoKHR()
@@ -11114,54 +11650,58 @@
 safe_VkSemaphoreGetWin32HandleInfoKHR::safe_VkSemaphoreGetWin32HandleInfoKHR(const safe_VkSemaphoreGetWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSemaphoreGetWin32HandleInfoKHR& safe_VkSemaphoreGetWin32HandleInfoKHR::operator=(const safe_VkSemaphoreGetWin32HandleInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSemaphoreGetWin32HandleInfoKHR::~safe_VkSemaphoreGetWin32HandleInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSemaphoreGetWin32HandleInfoKHR::initialize(const VkSemaphoreGetWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     semaphore = in_struct->semaphore;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSemaphoreGetWin32HandleInfoKHR::initialize(const safe_VkSemaphoreGetWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     semaphore = src->semaphore;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkImportSemaphoreFdInfoKHR::safe_VkImportSemaphoreFdInfoKHR(const VkImportSemaphoreFdInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     semaphore(in_struct->semaphore),
     flags(in_struct->flags),
     handleType(in_struct->handleType),
     fd(in_struct->fd)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportSemaphoreFdInfoKHR::safe_VkImportSemaphoreFdInfoKHR()
@@ -11170,58 +11710,62 @@
 safe_VkImportSemaphoreFdInfoKHR::safe_VkImportSemaphoreFdInfoKHR(const safe_VkImportSemaphoreFdInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     flags = src.flags;
     handleType = src.handleType;
     fd = src.fd;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportSemaphoreFdInfoKHR& safe_VkImportSemaphoreFdInfoKHR::operator=(const safe_VkImportSemaphoreFdInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     flags = src.flags;
     handleType = src.handleType;
     fd = src.fd;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportSemaphoreFdInfoKHR::~safe_VkImportSemaphoreFdInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportSemaphoreFdInfoKHR::initialize(const VkImportSemaphoreFdInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     semaphore = in_struct->semaphore;
     flags = in_struct->flags;
     handleType = in_struct->handleType;
     fd = in_struct->fd;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportSemaphoreFdInfoKHR::initialize(const safe_VkImportSemaphoreFdInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     semaphore = src->semaphore;
     flags = src->flags;
     handleType = src->handleType;
     fd = src->fd;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSemaphoreGetFdInfoKHR::safe_VkSemaphoreGetFdInfoKHR(const VkSemaphoreGetFdInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     semaphore(in_struct->semaphore),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSemaphoreGetFdInfoKHR::safe_VkSemaphoreGetFdInfoKHR()
@@ -11230,49 +11774,53 @@
 safe_VkSemaphoreGetFdInfoKHR::safe_VkSemaphoreGetFdInfoKHR(const safe_VkSemaphoreGetFdInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSemaphoreGetFdInfoKHR& safe_VkSemaphoreGetFdInfoKHR::operator=(const safe_VkSemaphoreGetFdInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     semaphore = src.semaphore;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSemaphoreGetFdInfoKHR::~safe_VkSemaphoreGetFdInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSemaphoreGetFdInfoKHR::initialize(const VkSemaphoreGetFdInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     semaphore = in_struct->semaphore;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSemaphoreGetFdInfoKHR::initialize(const safe_VkSemaphoreGetFdInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     semaphore = src->semaphore;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDevicePushDescriptorPropertiesKHR::safe_VkPhysicalDevicePushDescriptorPropertiesKHR(const VkPhysicalDevicePushDescriptorPropertiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxPushDescriptors(in_struct->maxPushDescriptors)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDevicePushDescriptorPropertiesKHR::safe_VkPhysicalDevicePushDescriptorPropertiesKHR()
@@ -11281,46 +11829,50 @@
 safe_VkPhysicalDevicePushDescriptorPropertiesKHR::safe_VkPhysicalDevicePushDescriptorPropertiesKHR(const safe_VkPhysicalDevicePushDescriptorPropertiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxPushDescriptors = src.maxPushDescriptors;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDevicePushDescriptorPropertiesKHR& safe_VkPhysicalDevicePushDescriptorPropertiesKHR::operator=(const safe_VkPhysicalDevicePushDescriptorPropertiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxPushDescriptors = src.maxPushDescriptors;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDevicePushDescriptorPropertiesKHR::~safe_VkPhysicalDevicePushDescriptorPropertiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDevicePushDescriptorPropertiesKHR::initialize(const VkPhysicalDevicePushDescriptorPropertiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxPushDescriptors = in_struct->maxPushDescriptors;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDevicePushDescriptorPropertiesKHR::initialize(const safe_VkPhysicalDevicePushDescriptorPropertiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxPushDescriptors = src->maxPushDescriptors;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::safe_VkPhysicalDeviceFloat16Int8FeaturesKHR(const VkPhysicalDeviceFloat16Int8FeaturesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderFloat16(in_struct->shaderFloat16),
     shaderInt8(in_struct->shaderInt8)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::safe_VkPhysicalDeviceFloat16Int8FeaturesKHR()
@@ -11329,42 +11881,46 @@
 safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::safe_VkPhysicalDeviceFloat16Int8FeaturesKHR(const safe_VkPhysicalDeviceFloat16Int8FeaturesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderFloat16 = src.shaderFloat16;
     shaderInt8 = src.shaderInt8;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFloat16Int8FeaturesKHR& safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::operator=(const safe_VkPhysicalDeviceFloat16Int8FeaturesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderFloat16 = src.shaderFloat16;
     shaderInt8 = src.shaderInt8;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::~safe_VkPhysicalDeviceFloat16Int8FeaturesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::initialize(const VkPhysicalDeviceFloat16Int8FeaturesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderFloat16 = in_struct->shaderFloat16;
     shaderInt8 = in_struct->shaderInt8;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFloat16Int8FeaturesKHR::initialize(const safe_VkPhysicalDeviceFloat16Int8FeaturesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderFloat16 = src->shaderFloat16;
     shaderInt8 = src->shaderInt8;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPresentRegionKHR::safe_VkPresentRegionKHR(const VkPresentRegionKHR* in_struct) :
@@ -11436,10 +11992,10 @@
 
 safe_VkPresentRegionsKHR::safe_VkPresentRegionsKHR(const VkPresentRegionsKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     swapchainCount(in_struct->swapchainCount),
     pRegions(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (swapchainCount && in_struct->pRegions) {
         pRegions = new safe_VkPresentRegionKHR[swapchainCount];
         for (uint32_t i=0; i<swapchainCount; ++i) {
@@ -11455,9 +12011,9 @@
 safe_VkPresentRegionsKHR::safe_VkPresentRegionsKHR(const safe_VkPresentRegionsKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     swapchainCount = src.swapchainCount;
     pRegions = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (swapchainCount && src.pRegions) {
         pRegions = new safe_VkPresentRegionKHR[swapchainCount];
         for (uint32_t i=0; i<swapchainCount; ++i) {
@@ -11472,11 +12028,13 @@
 
     if (pRegions)
         delete[] pRegions;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     swapchainCount = src.swapchainCount;
     pRegions = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (swapchainCount && src.pRegions) {
         pRegions = new safe_VkPresentRegionKHR[swapchainCount];
         for (uint32_t i=0; i<swapchainCount; ++i) {
@@ -11491,14 +12049,16 @@
 {
     if (pRegions)
         delete[] pRegions;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPresentRegionsKHR::initialize(const VkPresentRegionsKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     swapchainCount = in_struct->swapchainCount;
     pRegions = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (swapchainCount && in_struct->pRegions) {
         pRegions = new safe_VkPresentRegionKHR[swapchainCount];
         for (uint32_t i=0; i<swapchainCount; ++i) {
@@ -11510,9 +12070,9 @@
 void safe_VkPresentRegionsKHR::initialize(const safe_VkPresentRegionsKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     swapchainCount = src->swapchainCount;
     pRegions = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (swapchainCount && src->pRegions) {
         pRegions = new safe_VkPresentRegionKHR[swapchainCount];
         for (uint32_t i=0; i<swapchainCount; ++i) {
@@ -11523,9 +12083,9 @@
 
 safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR(const VkPhysicalDeviceImagelessFramebufferFeaturesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     imagelessFramebuffer(in_struct->imagelessFramebuffer)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR()
@@ -11534,43 +12094,46 @@
 safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR(const safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     imagelessFramebuffer = src.imagelessFramebuffer;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR& safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::operator=(const safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     imagelessFramebuffer = src.imagelessFramebuffer;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::~safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::initialize(const VkPhysicalDeviceImagelessFramebufferFeaturesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     imagelessFramebuffer = in_struct->imagelessFramebuffer;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR::initialize(const safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     imagelessFramebuffer = src->imagelessFramebuffer;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkFramebufferAttachmentImageInfoKHR::safe_VkFramebufferAttachmentImageInfoKHR(const VkFramebufferAttachmentImageInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     usage(in_struct->usage),
     width(in_struct->width),
@@ -11579,6 +12142,7 @@
     viewFormatCount(in_struct->viewFormatCount),
     pViewFormats(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewFormats) {
         pViewFormats = new VkFormat[in_struct->viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)in_struct->pViewFormats, sizeof(VkFormat)*in_struct->viewFormatCount);
@@ -11592,7 +12156,6 @@
 safe_VkFramebufferAttachmentImageInfoKHR::safe_VkFramebufferAttachmentImageInfoKHR(const safe_VkFramebufferAttachmentImageInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     usage = src.usage;
     width = src.width;
@@ -11600,6 +12163,7 @@
     layerCount = src.layerCount;
     viewFormatCount = src.viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewFormats) {
         pViewFormats = new VkFormat[src.viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)src.pViewFormats, sizeof(VkFormat)*src.viewFormatCount);
@@ -11612,9 +12176,10 @@
 
     if (pViewFormats)
         delete[] pViewFormats;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     usage = src.usage;
     width = src.width;
@@ -11622,6 +12187,7 @@
     layerCount = src.layerCount;
     viewFormatCount = src.viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewFormats) {
         pViewFormats = new VkFormat[src.viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)src.pViewFormats, sizeof(VkFormat)*src.viewFormatCount);
@@ -11634,12 +12200,13 @@
 {
     if (pViewFormats)
         delete[] pViewFormats;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFramebufferAttachmentImageInfoKHR::initialize(const VkFramebufferAttachmentImageInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     usage = in_struct->usage;
     width = in_struct->width;
@@ -11647,6 +12214,7 @@
     layerCount = in_struct->layerCount;
     viewFormatCount = in_struct->viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewFormats) {
         pViewFormats = new VkFormat[in_struct->viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)in_struct->pViewFormats, sizeof(VkFormat)*in_struct->viewFormatCount);
@@ -11656,7 +12224,6 @@
 void safe_VkFramebufferAttachmentImageInfoKHR::initialize(const safe_VkFramebufferAttachmentImageInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     usage = src->usage;
     width = src->width;
@@ -11664,6 +12231,7 @@
     layerCount = src->layerCount;
     viewFormatCount = src->viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pViewFormats) {
         pViewFormats = new VkFormat[src->viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)src->pViewFormats, sizeof(VkFormat)*src->viewFormatCount);
@@ -11672,10 +12240,10 @@
 
 safe_VkFramebufferAttachmentsCreateInfoKHR::safe_VkFramebufferAttachmentsCreateInfoKHR(const VkFramebufferAttachmentsCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     attachmentImageInfoCount(in_struct->attachmentImageInfoCount),
     pAttachmentImageInfos(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentImageInfoCount && in_struct->pAttachmentImageInfos) {
         pAttachmentImageInfos = new safe_VkFramebufferAttachmentImageInfoKHR[attachmentImageInfoCount];
         for (uint32_t i=0; i<attachmentImageInfoCount; ++i) {
@@ -11691,9 +12259,9 @@
 safe_VkFramebufferAttachmentsCreateInfoKHR::safe_VkFramebufferAttachmentsCreateInfoKHR(const safe_VkFramebufferAttachmentsCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     attachmentImageInfoCount = src.attachmentImageInfoCount;
     pAttachmentImageInfos = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentImageInfoCount && src.pAttachmentImageInfos) {
         pAttachmentImageInfos = new safe_VkFramebufferAttachmentImageInfoKHR[attachmentImageInfoCount];
         for (uint32_t i=0; i<attachmentImageInfoCount; ++i) {
@@ -11708,11 +12276,13 @@
 
     if (pAttachmentImageInfos)
         delete[] pAttachmentImageInfos;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     attachmentImageInfoCount = src.attachmentImageInfoCount;
     pAttachmentImageInfos = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentImageInfoCount && src.pAttachmentImageInfos) {
         pAttachmentImageInfos = new safe_VkFramebufferAttachmentImageInfoKHR[attachmentImageInfoCount];
         for (uint32_t i=0; i<attachmentImageInfoCount; ++i) {
@@ -11727,14 +12297,16 @@
 {
     if (pAttachmentImageInfos)
         delete[] pAttachmentImageInfos;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFramebufferAttachmentsCreateInfoKHR::initialize(const VkFramebufferAttachmentsCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     attachmentImageInfoCount = in_struct->attachmentImageInfoCount;
     pAttachmentImageInfos = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentImageInfoCount && in_struct->pAttachmentImageInfos) {
         pAttachmentImageInfos = new safe_VkFramebufferAttachmentImageInfoKHR[attachmentImageInfoCount];
         for (uint32_t i=0; i<attachmentImageInfoCount; ++i) {
@@ -11746,9 +12318,9 @@
 void safe_VkFramebufferAttachmentsCreateInfoKHR::initialize(const safe_VkFramebufferAttachmentsCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     attachmentImageInfoCount = src->attachmentImageInfoCount;
     pAttachmentImageInfos = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (attachmentImageInfoCount && src->pAttachmentImageInfos) {
         pAttachmentImageInfos = new safe_VkFramebufferAttachmentImageInfoKHR[attachmentImageInfoCount];
         for (uint32_t i=0; i<attachmentImageInfoCount; ++i) {
@@ -11759,10 +12331,10 @@
 
 safe_VkRenderPassAttachmentBeginInfoKHR::safe_VkRenderPassAttachmentBeginInfoKHR(const VkRenderPassAttachmentBeginInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     attachmentCount(in_struct->attachmentCount),
     pAttachments(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentCount && in_struct->pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -11778,9 +12350,9 @@
 safe_VkRenderPassAttachmentBeginInfoKHR::safe_VkRenderPassAttachmentBeginInfoKHR(const safe_VkRenderPassAttachmentBeginInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentCount && src.pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -11795,11 +12367,13 @@
 
     if (pAttachments)
         delete[] pAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentCount && src.pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -11814,14 +12388,16 @@
 {
     if (pAttachments)
         delete[] pAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassAttachmentBeginInfoKHR::initialize(const VkRenderPassAttachmentBeginInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     attachmentCount = in_struct->attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentCount && in_struct->pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -11833,9 +12409,9 @@
 void safe_VkRenderPassAttachmentBeginInfoKHR::initialize(const safe_VkRenderPassAttachmentBeginInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     attachmentCount = src->attachmentCount;
     pAttachments = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (attachmentCount && src->pAttachments) {
         pAttachments = new VkImageView[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -11846,7 +12422,6 @@
 
 safe_VkAttachmentDescription2KHR::safe_VkAttachmentDescription2KHR(const VkAttachmentDescription2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     format(in_struct->format),
     samples(in_struct->samples),
@@ -11857,6 +12432,7 @@
     initialLayout(in_struct->initialLayout),
     finalLayout(in_struct->finalLayout)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAttachmentDescription2KHR::safe_VkAttachmentDescription2KHR()
@@ -11865,7 +12441,6 @@
 safe_VkAttachmentDescription2KHR::safe_VkAttachmentDescription2KHR(const safe_VkAttachmentDescription2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     format = src.format;
     samples = src.samples;
@@ -11875,15 +12450,17 @@
     stencilStoreOp = src.stencilStoreOp;
     initialLayout = src.initialLayout;
     finalLayout = src.finalLayout;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAttachmentDescription2KHR& safe_VkAttachmentDescription2KHR::operator=(const safe_VkAttachmentDescription2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     format = src.format;
     samples = src.samples;
@@ -11893,18 +12470,20 @@
     stencilStoreOp = src.stencilStoreOp;
     initialLayout = src.initialLayout;
     finalLayout = src.finalLayout;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAttachmentDescription2KHR::~safe_VkAttachmentDescription2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAttachmentDescription2KHR::initialize(const VkAttachmentDescription2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     format = in_struct->format;
     samples = in_struct->samples;
@@ -11914,12 +12493,12 @@
     stencilStoreOp = in_struct->stencilStoreOp;
     initialLayout = in_struct->initialLayout;
     finalLayout = in_struct->finalLayout;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAttachmentDescription2KHR::initialize(const safe_VkAttachmentDescription2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     format = src->format;
     samples = src->samples;
@@ -11929,15 +12508,16 @@
     stencilStoreOp = src->stencilStoreOp;
     initialLayout = src->initialLayout;
     finalLayout = src->finalLayout;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkAttachmentReference2KHR::safe_VkAttachmentReference2KHR(const VkAttachmentReference2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     attachment(in_struct->attachment),
     layout(in_struct->layout),
     aspectMask(in_struct->aspectMask)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAttachmentReference2KHR::safe_VkAttachmentReference2KHR()
@@ -11946,51 +12526,54 @@
 safe_VkAttachmentReference2KHR::safe_VkAttachmentReference2KHR(const safe_VkAttachmentReference2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     attachment = src.attachment;
     layout = src.layout;
     aspectMask = src.aspectMask;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAttachmentReference2KHR& safe_VkAttachmentReference2KHR::operator=(const safe_VkAttachmentReference2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     attachment = src.attachment;
     layout = src.layout;
     aspectMask = src.aspectMask;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAttachmentReference2KHR::~safe_VkAttachmentReference2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAttachmentReference2KHR::initialize(const VkAttachmentReference2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     attachment = in_struct->attachment;
     layout = in_struct->layout;
     aspectMask = in_struct->aspectMask;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAttachmentReference2KHR::initialize(const safe_VkAttachmentReference2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     attachment = src->attachment;
     layout = src->layout;
     aspectMask = src->aspectMask;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSubpassDescription2KHR::safe_VkSubpassDescription2KHR(const VkSubpassDescription2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     pipelineBindPoint(in_struct->pipelineBindPoint),
     viewMask(in_struct->viewMask),
@@ -12002,6 +12585,7 @@
     preserveAttachmentCount(in_struct->preserveAttachmentCount),
     pPreserveAttachments(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (inputAttachmentCount && in_struct->pInputAttachments) {
         pInputAttachments = new safe_VkAttachmentReference2KHR[inputAttachmentCount];
         for (uint32_t i=0; i<inputAttachmentCount; ++i) {
@@ -12040,7 +12624,6 @@
 safe_VkSubpassDescription2KHR::safe_VkSubpassDescription2KHR(const safe_VkSubpassDescription2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pipelineBindPoint = src.pipelineBindPoint;
     viewMask = src.viewMask;
@@ -12051,6 +12634,7 @@
     pResolveAttachments = nullptr;
     preserveAttachmentCount = src.preserveAttachmentCount;
     pPreserveAttachments = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (inputAttachmentCount && src.pInputAttachments) {
         pInputAttachments = new safe_VkAttachmentReference2KHR[inputAttachmentCount];
         for (uint32_t i=0; i<inputAttachmentCount; ++i) {
@@ -12093,9 +12677,10 @@
         delete pDepthStencilAttachment;
     if (pPreserveAttachments)
         delete[] pPreserveAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pipelineBindPoint = src.pipelineBindPoint;
     viewMask = src.viewMask;
@@ -12106,6 +12691,7 @@
     pResolveAttachments = nullptr;
     preserveAttachmentCount = src.preserveAttachmentCount;
     pPreserveAttachments = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (inputAttachmentCount && src.pInputAttachments) {
         pInputAttachments = new safe_VkAttachmentReference2KHR[inputAttachmentCount];
         for (uint32_t i=0; i<inputAttachmentCount; ++i) {
@@ -12148,12 +12734,13 @@
         delete pDepthStencilAttachment;
     if (pPreserveAttachments)
         delete[] pPreserveAttachments;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSubpassDescription2KHR::initialize(const VkSubpassDescription2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     pipelineBindPoint = in_struct->pipelineBindPoint;
     viewMask = in_struct->viewMask;
@@ -12164,6 +12751,7 @@
     pResolveAttachments = nullptr;
     preserveAttachmentCount = in_struct->preserveAttachmentCount;
     pPreserveAttachments = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (inputAttachmentCount && in_struct->pInputAttachments) {
         pInputAttachments = new safe_VkAttachmentReference2KHR[inputAttachmentCount];
         for (uint32_t i=0; i<inputAttachmentCount; ++i) {
@@ -12195,7 +12783,6 @@
 void safe_VkSubpassDescription2KHR::initialize(const safe_VkSubpassDescription2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     pipelineBindPoint = src->pipelineBindPoint;
     viewMask = src->viewMask;
@@ -12206,6 +12793,7 @@
     pResolveAttachments = nullptr;
     preserveAttachmentCount = src->preserveAttachmentCount;
     pPreserveAttachments = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (inputAttachmentCount && src->pInputAttachments) {
         pInputAttachments = new safe_VkAttachmentReference2KHR[inputAttachmentCount];
         for (uint32_t i=0; i<inputAttachmentCount; ++i) {
@@ -12236,7 +12824,6 @@
 
 safe_VkSubpassDependency2KHR::safe_VkSubpassDependency2KHR(const VkSubpassDependency2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcSubpass(in_struct->srcSubpass),
     dstSubpass(in_struct->dstSubpass),
     srcStageMask(in_struct->srcStageMask),
@@ -12246,6 +12833,7 @@
     dependencyFlags(in_struct->dependencyFlags),
     viewOffset(in_struct->viewOffset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSubpassDependency2KHR::safe_VkSubpassDependency2KHR()
@@ -12254,7 +12842,6 @@
 safe_VkSubpassDependency2KHR::safe_VkSubpassDependency2KHR(const safe_VkSubpassDependency2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcSubpass = src.srcSubpass;
     dstSubpass = src.dstSubpass;
     srcStageMask = src.srcStageMask;
@@ -12263,15 +12850,17 @@
     dstAccessMask = src.dstAccessMask;
     dependencyFlags = src.dependencyFlags;
     viewOffset = src.viewOffset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSubpassDependency2KHR& safe_VkSubpassDependency2KHR::operator=(const safe_VkSubpassDependency2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcSubpass = src.srcSubpass;
     dstSubpass = src.dstSubpass;
     srcStageMask = src.srcStageMask;
@@ -12280,18 +12869,20 @@
     dstAccessMask = src.dstAccessMask;
     dependencyFlags = src.dependencyFlags;
     viewOffset = src.viewOffset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSubpassDependency2KHR::~safe_VkSubpassDependency2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSubpassDependency2KHR::initialize(const VkSubpassDependency2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcSubpass = in_struct->srcSubpass;
     dstSubpass = in_struct->dstSubpass;
     srcStageMask = in_struct->srcStageMask;
@@ -12300,12 +12891,12 @@
     dstAccessMask = in_struct->dstAccessMask;
     dependencyFlags = in_struct->dependencyFlags;
     viewOffset = in_struct->viewOffset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSubpassDependency2KHR::initialize(const safe_VkSubpassDependency2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcSubpass = src->srcSubpass;
     dstSubpass = src->dstSubpass;
     srcStageMask = src->srcStageMask;
@@ -12314,11 +12905,11 @@
     dstAccessMask = src->dstAccessMask;
     dependencyFlags = src->dependencyFlags;
     viewOffset = src->viewOffset;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkRenderPassCreateInfo2KHR::safe_VkRenderPassCreateInfo2KHR(const VkRenderPassCreateInfo2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     attachmentCount(in_struct->attachmentCount),
     pAttachments(nullptr),
@@ -12329,6 +12920,7 @@
     correlatedViewMaskCount(in_struct->correlatedViewMaskCount),
     pCorrelatedViewMasks(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentCount && in_struct->pAttachments) {
         pAttachments = new safe_VkAttachmentDescription2KHR[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -12363,7 +12955,6 @@
 safe_VkRenderPassCreateInfo2KHR::safe_VkRenderPassCreateInfo2KHR(const safe_VkRenderPassCreateInfo2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
@@ -12373,6 +12964,7 @@
     pDependencies = nullptr;
     correlatedViewMaskCount = src.correlatedViewMaskCount;
     pCorrelatedViewMasks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentCount && src.pAttachments) {
         pAttachments = new safe_VkAttachmentDescription2KHR[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -12409,9 +13001,10 @@
         delete[] pDependencies;
     if (pCorrelatedViewMasks)
         delete[] pCorrelatedViewMasks;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     attachmentCount = src.attachmentCount;
     pAttachments = nullptr;
@@ -12421,6 +13014,7 @@
     pDependencies = nullptr;
     correlatedViewMaskCount = src.correlatedViewMaskCount;
     pCorrelatedViewMasks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (attachmentCount && src.pAttachments) {
         pAttachments = new safe_VkAttachmentDescription2KHR[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -12457,12 +13051,13 @@
         delete[] pDependencies;
     if (pCorrelatedViewMasks)
         delete[] pCorrelatedViewMasks;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassCreateInfo2KHR::initialize(const VkRenderPassCreateInfo2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     attachmentCount = in_struct->attachmentCount;
     pAttachments = nullptr;
@@ -12472,6 +13067,7 @@
     pDependencies = nullptr;
     correlatedViewMaskCount = in_struct->correlatedViewMaskCount;
     pCorrelatedViewMasks = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (attachmentCount && in_struct->pAttachments) {
         pAttachments = new safe_VkAttachmentDescription2KHR[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -12499,7 +13095,6 @@
 void safe_VkRenderPassCreateInfo2KHR::initialize(const safe_VkRenderPassCreateInfo2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     attachmentCount = src->attachmentCount;
     pAttachments = nullptr;
@@ -12509,6 +13104,7 @@
     pDependencies = nullptr;
     correlatedViewMaskCount = src->correlatedViewMaskCount;
     pCorrelatedViewMasks = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (attachmentCount && src->pAttachments) {
         pAttachments = new safe_VkAttachmentDescription2KHR[attachmentCount];
         for (uint32_t i=0; i<attachmentCount; ++i) {
@@ -12535,9 +13131,9 @@
 
 safe_VkSubpassBeginInfoKHR::safe_VkSubpassBeginInfoKHR(const VkSubpassBeginInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     contents(in_struct->contents)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSubpassBeginInfoKHR::safe_VkSubpassBeginInfoKHR()
@@ -12546,44 +13142,48 @@
 safe_VkSubpassBeginInfoKHR::safe_VkSubpassBeginInfoKHR(const safe_VkSubpassBeginInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     contents = src.contents;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSubpassBeginInfoKHR& safe_VkSubpassBeginInfoKHR::operator=(const safe_VkSubpassBeginInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     contents = src.contents;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSubpassBeginInfoKHR::~safe_VkSubpassBeginInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSubpassBeginInfoKHR::initialize(const VkSubpassBeginInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     contents = in_struct->contents;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSubpassBeginInfoKHR::initialize(const safe_VkSubpassBeginInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     contents = src->contents;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSubpassEndInfoKHR::safe_VkSubpassEndInfoKHR(const VkSubpassEndInfoKHR* in_struct) :
-    sType(in_struct->sType),
-    pNext(in_struct->pNext)
+    sType(in_struct->sType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSubpassEndInfoKHR::safe_VkSubpassEndInfoKHR()
@@ -12592,41 +13192,45 @@
 safe_VkSubpassEndInfoKHR::safe_VkSubpassEndInfoKHR(const safe_VkSubpassEndInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSubpassEndInfoKHR& safe_VkSubpassEndInfoKHR::operator=(const safe_VkSubpassEndInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSubpassEndInfoKHR::~safe_VkSubpassEndInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSubpassEndInfoKHR::initialize(const VkSubpassEndInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSubpassEndInfoKHR::initialize(const safe_VkSubpassEndInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSharedPresentSurfaceCapabilitiesKHR::safe_VkSharedPresentSurfaceCapabilitiesKHR(const VkSharedPresentSurfaceCapabilitiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     sharedPresentSupportedUsageFlags(in_struct->sharedPresentSupportedUsageFlags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSharedPresentSurfaceCapabilitiesKHR::safe_VkSharedPresentSurfaceCapabilitiesKHR()
@@ -12635,51 +13239,55 @@
 safe_VkSharedPresentSurfaceCapabilitiesKHR::safe_VkSharedPresentSurfaceCapabilitiesKHR(const safe_VkSharedPresentSurfaceCapabilitiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     sharedPresentSupportedUsageFlags = src.sharedPresentSupportedUsageFlags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSharedPresentSurfaceCapabilitiesKHR& safe_VkSharedPresentSurfaceCapabilitiesKHR::operator=(const safe_VkSharedPresentSurfaceCapabilitiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     sharedPresentSupportedUsageFlags = src.sharedPresentSupportedUsageFlags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSharedPresentSurfaceCapabilitiesKHR::~safe_VkSharedPresentSurfaceCapabilitiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSharedPresentSurfaceCapabilitiesKHR::initialize(const VkSharedPresentSurfaceCapabilitiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     sharedPresentSupportedUsageFlags = in_struct->sharedPresentSupportedUsageFlags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSharedPresentSurfaceCapabilitiesKHR::initialize(const safe_VkSharedPresentSurfaceCapabilitiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     sharedPresentSupportedUsageFlags = src->sharedPresentSupportedUsageFlags;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkImportFenceWin32HandleInfoKHR::safe_VkImportFenceWin32HandleInfoKHR(const VkImportFenceWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fence(in_struct->fence),
     flags(in_struct->flags),
     handleType(in_struct->handleType),
     handle(in_struct->handle),
     name(in_struct->name)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportFenceWin32HandleInfoKHR::safe_VkImportFenceWin32HandleInfoKHR()
@@ -12688,54 +13296,58 @@
 safe_VkImportFenceWin32HandleInfoKHR::safe_VkImportFenceWin32HandleInfoKHR(const safe_VkImportFenceWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     flags = src.flags;
     handleType = src.handleType;
     handle = src.handle;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportFenceWin32HandleInfoKHR& safe_VkImportFenceWin32HandleInfoKHR::operator=(const safe_VkImportFenceWin32HandleInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     flags = src.flags;
     handleType = src.handleType;
     handle = src.handle;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportFenceWin32HandleInfoKHR::~safe_VkImportFenceWin32HandleInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportFenceWin32HandleInfoKHR::initialize(const VkImportFenceWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fence = in_struct->fence;
     flags = in_struct->flags;
     handleType = in_struct->handleType;
     handle = in_struct->handle;
     name = in_struct->name;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportFenceWin32HandleInfoKHR::initialize(const safe_VkImportFenceWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fence = src->fence;
     flags = src->flags;
     handleType = src->handleType;
     handle = src->handle;
     name = src->name;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -12744,11 +13356,11 @@
 
 safe_VkExportFenceWin32HandleInfoKHR::safe_VkExportFenceWin32HandleInfoKHR(const VkExportFenceWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pAttributes(nullptr),
     dwAccess(in_struct->dwAccess),
     name(in_struct->name)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -12761,10 +13373,10 @@
 safe_VkExportFenceWin32HandleInfoKHR::safe_VkExportFenceWin32HandleInfoKHR(const safe_VkExportFenceWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -12776,12 +13388,14 @@
 
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
     name = src.name;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -12793,15 +13407,17 @@
 {
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportFenceWin32HandleInfoKHR::initialize(const VkExportFenceWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pAttributes = nullptr;
     dwAccess = in_struct->dwAccess;
     name = in_struct->name;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -12810,10 +13426,10 @@
 void safe_VkExportFenceWin32HandleInfoKHR::initialize(const safe_VkExportFenceWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pAttributes = nullptr;
     dwAccess = src->dwAccess;
     name = src->name;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src->pAttributes);
     }
@@ -12825,10 +13441,10 @@
 
 safe_VkFenceGetWin32HandleInfoKHR::safe_VkFenceGetWin32HandleInfoKHR(const VkFenceGetWin32HandleInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fence(in_struct->fence),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkFenceGetWin32HandleInfoKHR::safe_VkFenceGetWin32HandleInfoKHR()
@@ -12837,54 +13453,58 @@
 safe_VkFenceGetWin32HandleInfoKHR::safe_VkFenceGetWin32HandleInfoKHR(const safe_VkFenceGetWin32HandleInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkFenceGetWin32HandleInfoKHR& safe_VkFenceGetWin32HandleInfoKHR::operator=(const safe_VkFenceGetWin32HandleInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkFenceGetWin32HandleInfoKHR::~safe_VkFenceGetWin32HandleInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFenceGetWin32HandleInfoKHR::initialize(const VkFenceGetWin32HandleInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fence = in_struct->fence;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkFenceGetWin32HandleInfoKHR::initialize(const safe_VkFenceGetWin32HandleInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fence = src->fence;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkImportFenceFdInfoKHR::safe_VkImportFenceFdInfoKHR(const VkImportFenceFdInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fence(in_struct->fence),
     flags(in_struct->flags),
     handleType(in_struct->handleType),
     fd(in_struct->fd)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportFenceFdInfoKHR::safe_VkImportFenceFdInfoKHR()
@@ -12893,58 +13513,62 @@
 safe_VkImportFenceFdInfoKHR::safe_VkImportFenceFdInfoKHR(const safe_VkImportFenceFdInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     flags = src.flags;
     handleType = src.handleType;
     fd = src.fd;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportFenceFdInfoKHR& safe_VkImportFenceFdInfoKHR::operator=(const safe_VkImportFenceFdInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     flags = src.flags;
     handleType = src.handleType;
     fd = src.fd;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportFenceFdInfoKHR::~safe_VkImportFenceFdInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportFenceFdInfoKHR::initialize(const VkImportFenceFdInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fence = in_struct->fence;
     flags = in_struct->flags;
     handleType = in_struct->handleType;
     fd = in_struct->fd;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportFenceFdInfoKHR::initialize(const safe_VkImportFenceFdInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fence = src->fence;
     flags = src->flags;
     handleType = src->handleType;
     fd = src->fd;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkFenceGetFdInfoKHR::safe_VkFenceGetFdInfoKHR(const VkFenceGetFdInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fence(in_struct->fence),
     handleType(in_struct->handleType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkFenceGetFdInfoKHR::safe_VkFenceGetFdInfoKHR()
@@ -12953,49 +13577,53 @@
 safe_VkFenceGetFdInfoKHR::safe_VkFenceGetFdInfoKHR(const safe_VkFenceGetFdInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkFenceGetFdInfoKHR& safe_VkFenceGetFdInfoKHR::operator=(const safe_VkFenceGetFdInfoKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fence = src.fence;
     handleType = src.handleType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkFenceGetFdInfoKHR::~safe_VkFenceGetFdInfoKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFenceGetFdInfoKHR::initialize(const VkFenceGetFdInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fence = in_struct->fence;
     handleType = in_struct->handleType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkFenceGetFdInfoKHR::initialize(const safe_VkFenceGetFdInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fence = src->fence;
     handleType = src->handleType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceSurfaceInfo2KHR::safe_VkPhysicalDeviceSurfaceInfo2KHR(const VkPhysicalDeviceSurfaceInfo2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     surface(in_struct->surface)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceSurfaceInfo2KHR::safe_VkPhysicalDeviceSurfaceInfo2KHR()
@@ -13004,45 +13632,49 @@
 safe_VkPhysicalDeviceSurfaceInfo2KHR::safe_VkPhysicalDeviceSurfaceInfo2KHR(const safe_VkPhysicalDeviceSurfaceInfo2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     surface = src.surface;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceSurfaceInfo2KHR& safe_VkPhysicalDeviceSurfaceInfo2KHR::operator=(const safe_VkPhysicalDeviceSurfaceInfo2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     surface = src.surface;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceSurfaceInfo2KHR::~safe_VkPhysicalDeviceSurfaceInfo2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceSurfaceInfo2KHR::initialize(const VkPhysicalDeviceSurfaceInfo2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     surface = in_struct->surface;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceSurfaceInfo2KHR::initialize(const safe_VkPhysicalDeviceSurfaceInfo2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     surface = src->surface;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSurfaceCapabilities2KHR::safe_VkSurfaceCapabilities2KHR(const VkSurfaceCapabilities2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     surfaceCapabilities(in_struct->surfaceCapabilities)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceCapabilities2KHR::safe_VkSurfaceCapabilities2KHR()
@@ -13051,45 +13683,49 @@
 safe_VkSurfaceCapabilities2KHR::safe_VkSurfaceCapabilities2KHR(const safe_VkSurfaceCapabilities2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     surfaceCapabilities = src.surfaceCapabilities;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceCapabilities2KHR& safe_VkSurfaceCapabilities2KHR::operator=(const safe_VkSurfaceCapabilities2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     surfaceCapabilities = src.surfaceCapabilities;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceCapabilities2KHR::~safe_VkSurfaceCapabilities2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceCapabilities2KHR::initialize(const VkSurfaceCapabilities2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     surfaceCapabilities = in_struct->surfaceCapabilities;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceCapabilities2KHR::initialize(const safe_VkSurfaceCapabilities2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     surfaceCapabilities = src->surfaceCapabilities;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSurfaceFormat2KHR::safe_VkSurfaceFormat2KHR(const VkSurfaceFormat2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     surfaceFormat(in_struct->surfaceFormat)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceFormat2KHR::safe_VkSurfaceFormat2KHR()
@@ -13098,45 +13734,49 @@
 safe_VkSurfaceFormat2KHR::safe_VkSurfaceFormat2KHR(const safe_VkSurfaceFormat2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     surfaceFormat = src.surfaceFormat;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceFormat2KHR& safe_VkSurfaceFormat2KHR::operator=(const safe_VkSurfaceFormat2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     surfaceFormat = src.surfaceFormat;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceFormat2KHR::~safe_VkSurfaceFormat2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceFormat2KHR::initialize(const VkSurfaceFormat2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     surfaceFormat = in_struct->surfaceFormat;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceFormat2KHR::initialize(const safe_VkSurfaceFormat2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     surfaceFormat = src->surfaceFormat;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayProperties2KHR::safe_VkDisplayProperties2KHR(const VkDisplayProperties2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     displayProperties(&in_struct->displayProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayProperties2KHR::safe_VkDisplayProperties2KHR()
@@ -13145,45 +13785,49 @@
 safe_VkDisplayProperties2KHR::safe_VkDisplayProperties2KHR(const safe_VkDisplayProperties2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     displayProperties.initialize(&src.displayProperties);
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayProperties2KHR& safe_VkDisplayProperties2KHR::operator=(const safe_VkDisplayProperties2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     displayProperties.initialize(&src.displayProperties);
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayProperties2KHR::~safe_VkDisplayProperties2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayProperties2KHR::initialize(const VkDisplayProperties2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     displayProperties.initialize(&in_struct->displayProperties);
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayProperties2KHR::initialize(const safe_VkDisplayProperties2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     displayProperties.initialize(&src->displayProperties);
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayPlaneProperties2KHR::safe_VkDisplayPlaneProperties2KHR(const VkDisplayPlaneProperties2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     displayPlaneProperties(in_struct->displayPlaneProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayPlaneProperties2KHR::safe_VkDisplayPlaneProperties2KHR()
@@ -13192,45 +13836,49 @@
 safe_VkDisplayPlaneProperties2KHR::safe_VkDisplayPlaneProperties2KHR(const safe_VkDisplayPlaneProperties2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     displayPlaneProperties = src.displayPlaneProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayPlaneProperties2KHR& safe_VkDisplayPlaneProperties2KHR::operator=(const safe_VkDisplayPlaneProperties2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     displayPlaneProperties = src.displayPlaneProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayPlaneProperties2KHR::~safe_VkDisplayPlaneProperties2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayPlaneProperties2KHR::initialize(const VkDisplayPlaneProperties2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     displayPlaneProperties = in_struct->displayPlaneProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayPlaneProperties2KHR::initialize(const safe_VkDisplayPlaneProperties2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     displayPlaneProperties = src->displayPlaneProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayModeProperties2KHR::safe_VkDisplayModeProperties2KHR(const VkDisplayModeProperties2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     displayModeProperties(in_struct->displayModeProperties)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayModeProperties2KHR::safe_VkDisplayModeProperties2KHR()
@@ -13239,46 +13887,50 @@
 safe_VkDisplayModeProperties2KHR::safe_VkDisplayModeProperties2KHR(const safe_VkDisplayModeProperties2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     displayModeProperties = src.displayModeProperties;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayModeProperties2KHR& safe_VkDisplayModeProperties2KHR::operator=(const safe_VkDisplayModeProperties2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     displayModeProperties = src.displayModeProperties;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayModeProperties2KHR::~safe_VkDisplayModeProperties2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayModeProperties2KHR::initialize(const VkDisplayModeProperties2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     displayModeProperties = in_struct->displayModeProperties;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayModeProperties2KHR::initialize(const safe_VkDisplayModeProperties2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     displayModeProperties = src->displayModeProperties;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayPlaneInfo2KHR::safe_VkDisplayPlaneInfo2KHR(const VkDisplayPlaneInfo2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     mode(in_struct->mode),
     planeIndex(in_struct->planeIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayPlaneInfo2KHR::safe_VkDisplayPlaneInfo2KHR()
@@ -13287,49 +13939,53 @@
 safe_VkDisplayPlaneInfo2KHR::safe_VkDisplayPlaneInfo2KHR(const safe_VkDisplayPlaneInfo2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     mode = src.mode;
     planeIndex = src.planeIndex;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayPlaneInfo2KHR& safe_VkDisplayPlaneInfo2KHR::operator=(const safe_VkDisplayPlaneInfo2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     mode = src.mode;
     planeIndex = src.planeIndex;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayPlaneInfo2KHR::~safe_VkDisplayPlaneInfo2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayPlaneInfo2KHR::initialize(const VkDisplayPlaneInfo2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     mode = in_struct->mode;
     planeIndex = in_struct->planeIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayPlaneInfo2KHR::initialize(const safe_VkDisplayPlaneInfo2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     mode = src->mode;
     planeIndex = src->planeIndex;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayPlaneCapabilities2KHR::safe_VkDisplayPlaneCapabilities2KHR(const VkDisplayPlaneCapabilities2KHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     capabilities(in_struct->capabilities)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayPlaneCapabilities2KHR::safe_VkDisplayPlaneCapabilities2KHR()
@@ -13338,46 +13994,50 @@
 safe_VkDisplayPlaneCapabilities2KHR::safe_VkDisplayPlaneCapabilities2KHR(const safe_VkDisplayPlaneCapabilities2KHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     capabilities = src.capabilities;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayPlaneCapabilities2KHR& safe_VkDisplayPlaneCapabilities2KHR::operator=(const safe_VkDisplayPlaneCapabilities2KHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     capabilities = src.capabilities;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayPlaneCapabilities2KHR::~safe_VkDisplayPlaneCapabilities2KHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayPlaneCapabilities2KHR::initialize(const VkDisplayPlaneCapabilities2KHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     capabilities = in_struct->capabilities;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayPlaneCapabilities2KHR::initialize(const safe_VkDisplayPlaneCapabilities2KHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     capabilities = src->capabilities;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageFormatListCreateInfoKHR::safe_VkImageFormatListCreateInfoKHR(const VkImageFormatListCreateInfoKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     viewFormatCount(in_struct->viewFormatCount),
     pViewFormats(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewFormats) {
         pViewFormats = new VkFormat[in_struct->viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)in_struct->pViewFormats, sizeof(VkFormat)*in_struct->viewFormatCount);
@@ -13391,9 +14051,9 @@
 safe_VkImageFormatListCreateInfoKHR::safe_VkImageFormatListCreateInfoKHR(const safe_VkImageFormatListCreateInfoKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     viewFormatCount = src.viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewFormats) {
         pViewFormats = new VkFormat[src.viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)src.pViewFormats, sizeof(VkFormat)*src.viewFormatCount);
@@ -13406,11 +14066,13 @@
 
     if (pViewFormats)
         delete[] pViewFormats;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     viewFormatCount = src.viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewFormats) {
         pViewFormats = new VkFormat[src.viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)src.pViewFormats, sizeof(VkFormat)*src.viewFormatCount);
@@ -13423,14 +14085,16 @@
 {
     if (pViewFormats)
         delete[] pViewFormats;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageFormatListCreateInfoKHR::initialize(const VkImageFormatListCreateInfoKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     viewFormatCount = in_struct->viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewFormats) {
         pViewFormats = new VkFormat[in_struct->viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)in_struct->pViewFormats, sizeof(VkFormat)*in_struct->viewFormatCount);
@@ -13440,9 +14104,9 @@
 void safe_VkImageFormatListCreateInfoKHR::initialize(const safe_VkImageFormatListCreateInfoKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     viewFormatCount = src->viewFormatCount;
     pViewFormats = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pViewFormats) {
         pViewFormats = new VkFormat[src->viewFormatCount];
         memcpy ((void *)pViewFormats, (void *)src->pViewFormats, sizeof(VkFormat)*src->viewFormatCount);
@@ -13451,11 +14115,11 @@
 
 safe_VkPhysicalDevice8BitStorageFeaturesKHR::safe_VkPhysicalDevice8BitStorageFeaturesKHR(const VkPhysicalDevice8BitStorageFeaturesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     storageBuffer8BitAccess(in_struct->storageBuffer8BitAccess),
     uniformAndStorageBuffer8BitAccess(in_struct->uniformAndStorageBuffer8BitAccess),
     storagePushConstant8(in_struct->storagePushConstant8)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDevice8BitStorageFeaturesKHR::safe_VkPhysicalDevice8BitStorageFeaturesKHR()
@@ -13464,54 +14128,58 @@
 safe_VkPhysicalDevice8BitStorageFeaturesKHR::safe_VkPhysicalDevice8BitStorageFeaturesKHR(const safe_VkPhysicalDevice8BitStorageFeaturesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     storageBuffer8BitAccess = src.storageBuffer8BitAccess;
     uniformAndStorageBuffer8BitAccess = src.uniformAndStorageBuffer8BitAccess;
     storagePushConstant8 = src.storagePushConstant8;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDevice8BitStorageFeaturesKHR& safe_VkPhysicalDevice8BitStorageFeaturesKHR::operator=(const safe_VkPhysicalDevice8BitStorageFeaturesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     storageBuffer8BitAccess = src.storageBuffer8BitAccess;
     uniformAndStorageBuffer8BitAccess = src.uniformAndStorageBuffer8BitAccess;
     storagePushConstant8 = src.storagePushConstant8;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDevice8BitStorageFeaturesKHR::~safe_VkPhysicalDevice8BitStorageFeaturesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDevice8BitStorageFeaturesKHR::initialize(const VkPhysicalDevice8BitStorageFeaturesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     storageBuffer8BitAccess = in_struct->storageBuffer8BitAccess;
     uniformAndStorageBuffer8BitAccess = in_struct->uniformAndStorageBuffer8BitAccess;
     storagePushConstant8 = in_struct->storagePushConstant8;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDevice8BitStorageFeaturesKHR::initialize(const safe_VkPhysicalDevice8BitStorageFeaturesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     storageBuffer8BitAccess = src->storageBuffer8BitAccess;
     uniformAndStorageBuffer8BitAccess = src->uniformAndStorageBuffer8BitAccess;
     storagePushConstant8 = src->storagePushConstant8;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR(const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderBufferInt64Atomics(in_struct->shaderBufferInt64Atomics),
     shaderSharedInt64Atomics(in_struct->shaderSharedInt64Atomics)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR()
@@ -13520,50 +14188,54 @@
 safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR(const safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderBufferInt64Atomics = src.shaderBufferInt64Atomics;
     shaderSharedInt64Atomics = src.shaderSharedInt64Atomics;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::operator=(const safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderBufferInt64Atomics = src.shaderBufferInt64Atomics;
     shaderSharedInt64Atomics = src.shaderSharedInt64Atomics;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::~safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::initialize(const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderBufferInt64Atomics = in_struct->shaderBufferInt64Atomics;
     shaderSharedInt64Atomics = in_struct->shaderSharedInt64Atomics;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR::initialize(const safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderBufferInt64Atomics = src->shaderBufferInt64Atomics;
     shaderSharedInt64Atomics = src->shaderSharedInt64Atomics;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceDriverPropertiesKHR::safe_VkPhysicalDeviceDriverPropertiesKHR(const VkPhysicalDeviceDriverPropertiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     driverID(in_struct->driverID),
     conformanceVersion(in_struct->conformanceVersion)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_DRIVER_NAME_SIZE_KHR; ++i) {
         driverName[i] = in_struct->driverName[i];
     }
@@ -13578,9 +14250,9 @@
 safe_VkPhysicalDeviceDriverPropertiesKHR::safe_VkPhysicalDeviceDriverPropertiesKHR(const safe_VkPhysicalDeviceDriverPropertiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     driverID = src.driverID;
     conformanceVersion = src.conformanceVersion;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_DRIVER_NAME_SIZE_KHR; ++i) {
         driverName[i] = src.driverName[i];
     }
@@ -13593,11 +14265,13 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     driverID = src.driverID;
     conformanceVersion = src.conformanceVersion;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_DRIVER_NAME_SIZE_KHR; ++i) {
         driverName[i] = src.driverName[i];
     }
@@ -13610,14 +14284,16 @@
 
 safe_VkPhysicalDeviceDriverPropertiesKHR::~safe_VkPhysicalDeviceDriverPropertiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDriverPropertiesKHR::initialize(const VkPhysicalDeviceDriverPropertiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     driverID = in_struct->driverID;
     conformanceVersion = in_struct->conformanceVersion;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_DRIVER_NAME_SIZE_KHR; ++i) {
         driverName[i] = in_struct->driverName[i];
     }
@@ -13629,9 +14305,9 @@
 void safe_VkPhysicalDeviceDriverPropertiesKHR::initialize(const safe_VkPhysicalDeviceDriverPropertiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     driverID = src->driverID;
     conformanceVersion = src->conformanceVersion;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<VK_MAX_DRIVER_NAME_SIZE_KHR; ++i) {
         driverName[i] = src->driverName[i];
     }
@@ -13642,7 +14318,6 @@
 
 safe_VkPhysicalDeviceFloatControlsPropertiesKHR::safe_VkPhysicalDeviceFloatControlsPropertiesKHR(const VkPhysicalDeviceFloatControlsPropertiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     separateDenormSettings(in_struct->separateDenormSettings),
     separateRoundingModeSettings(in_struct->separateRoundingModeSettings),
     shaderSignedZeroInfNanPreserveFloat16(in_struct->shaderSignedZeroInfNanPreserveFloat16),
@@ -13661,6 +14336,7 @@
     shaderRoundingModeRTZFloat32(in_struct->shaderRoundingModeRTZFloat32),
     shaderRoundingModeRTZFloat64(in_struct->shaderRoundingModeRTZFloat64)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFloatControlsPropertiesKHR::safe_VkPhysicalDeviceFloatControlsPropertiesKHR()
@@ -13669,7 +14345,6 @@
 safe_VkPhysicalDeviceFloatControlsPropertiesKHR::safe_VkPhysicalDeviceFloatControlsPropertiesKHR(const safe_VkPhysicalDeviceFloatControlsPropertiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     separateDenormSettings = src.separateDenormSettings;
     separateRoundingModeSettings = src.separateRoundingModeSettings;
     shaderSignedZeroInfNanPreserveFloat16 = src.shaderSignedZeroInfNanPreserveFloat16;
@@ -13687,15 +14362,17 @@
     shaderRoundingModeRTZFloat16 = src.shaderRoundingModeRTZFloat16;
     shaderRoundingModeRTZFloat32 = src.shaderRoundingModeRTZFloat32;
     shaderRoundingModeRTZFloat64 = src.shaderRoundingModeRTZFloat64;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFloatControlsPropertiesKHR& safe_VkPhysicalDeviceFloatControlsPropertiesKHR::operator=(const safe_VkPhysicalDeviceFloatControlsPropertiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     separateDenormSettings = src.separateDenormSettings;
     separateRoundingModeSettings = src.separateRoundingModeSettings;
     shaderSignedZeroInfNanPreserveFloat16 = src.shaderSignedZeroInfNanPreserveFloat16;
@@ -13713,18 +14390,20 @@
     shaderRoundingModeRTZFloat16 = src.shaderRoundingModeRTZFloat16;
     shaderRoundingModeRTZFloat32 = src.shaderRoundingModeRTZFloat32;
     shaderRoundingModeRTZFloat64 = src.shaderRoundingModeRTZFloat64;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFloatControlsPropertiesKHR::~safe_VkPhysicalDeviceFloatControlsPropertiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFloatControlsPropertiesKHR::initialize(const VkPhysicalDeviceFloatControlsPropertiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     separateDenormSettings = in_struct->separateDenormSettings;
     separateRoundingModeSettings = in_struct->separateRoundingModeSettings;
     shaderSignedZeroInfNanPreserveFloat16 = in_struct->shaderSignedZeroInfNanPreserveFloat16;
@@ -13742,12 +14421,12 @@
     shaderRoundingModeRTZFloat16 = in_struct->shaderRoundingModeRTZFloat16;
     shaderRoundingModeRTZFloat32 = in_struct->shaderRoundingModeRTZFloat32;
     shaderRoundingModeRTZFloat64 = in_struct->shaderRoundingModeRTZFloat64;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFloatControlsPropertiesKHR::initialize(const safe_VkPhysicalDeviceFloatControlsPropertiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     separateDenormSettings = src->separateDenormSettings;
     separateRoundingModeSettings = src->separateRoundingModeSettings;
     shaderSignedZeroInfNanPreserveFloat16 = src->shaderSignedZeroInfNanPreserveFloat16;
@@ -13765,14 +14444,15 @@
     shaderRoundingModeRTZFloat16 = src->shaderRoundingModeRTZFloat16;
     shaderRoundingModeRTZFloat32 = src->shaderRoundingModeRTZFloat32;
     shaderRoundingModeRTZFloat64 = src->shaderRoundingModeRTZFloat64;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSubpassDescriptionDepthStencilResolveKHR::safe_VkSubpassDescriptionDepthStencilResolveKHR(const VkSubpassDescriptionDepthStencilResolveKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     depthResolveMode(in_struct->depthResolveMode),
     stencilResolveMode(in_struct->stencilResolveMode)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDepthStencilResolveAttachment)
         pDepthStencilResolveAttachment = new safe_VkAttachmentReference2KHR(in_struct->pDepthStencilResolveAttachment);
     else
@@ -13785,9 +14465,9 @@
 safe_VkSubpassDescriptionDepthStencilResolveKHR::safe_VkSubpassDescriptionDepthStencilResolveKHR(const safe_VkSubpassDescriptionDepthStencilResolveKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     depthResolveMode = src.depthResolveMode;
     stencilResolveMode = src.stencilResolveMode;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDepthStencilResolveAttachment)
         pDepthStencilResolveAttachment = new safe_VkAttachmentReference2KHR(*src.pDepthStencilResolveAttachment);
     else
@@ -13800,11 +14480,13 @@
 
     if (pDepthStencilResolveAttachment)
         delete pDepthStencilResolveAttachment;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     depthResolveMode = src.depthResolveMode;
     stencilResolveMode = src.stencilResolveMode;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDepthStencilResolveAttachment)
         pDepthStencilResolveAttachment = new safe_VkAttachmentReference2KHR(*src.pDepthStencilResolveAttachment);
     else
@@ -13817,14 +14499,16 @@
 {
     if (pDepthStencilResolveAttachment)
         delete pDepthStencilResolveAttachment;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSubpassDescriptionDepthStencilResolveKHR::initialize(const VkSubpassDescriptionDepthStencilResolveKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     depthResolveMode = in_struct->depthResolveMode;
     stencilResolveMode = in_struct->stencilResolveMode;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDepthStencilResolveAttachment)
         pDepthStencilResolveAttachment = new safe_VkAttachmentReference2KHR(in_struct->pDepthStencilResolveAttachment);
     else
@@ -13834,9 +14518,9 @@
 void safe_VkSubpassDescriptionDepthStencilResolveKHR::initialize(const safe_VkSubpassDescriptionDepthStencilResolveKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     depthResolveMode = src->depthResolveMode;
     stencilResolveMode = src->stencilResolveMode;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDepthStencilResolveAttachment)
         pDepthStencilResolveAttachment = new safe_VkAttachmentReference2KHR(*src->pDepthStencilResolveAttachment);
     else
@@ -13845,12 +14529,12 @@
 
 safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR(const VkPhysicalDeviceDepthStencilResolvePropertiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     supportedDepthResolveModes(in_struct->supportedDepthResolveModes),
     supportedStencilResolveModes(in_struct->supportedStencilResolveModes),
     independentResolveNone(in_struct->independentResolveNone),
     independentResolve(in_struct->independentResolve)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR()
@@ -13859,59 +14543,63 @@
 safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR(const safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     supportedDepthResolveModes = src.supportedDepthResolveModes;
     supportedStencilResolveModes = src.supportedStencilResolveModes;
     independentResolveNone = src.independentResolveNone;
     independentResolve = src.independentResolve;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR& safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::operator=(const safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     supportedDepthResolveModes = src.supportedDepthResolveModes;
     supportedStencilResolveModes = src.supportedStencilResolveModes;
     independentResolveNone = src.independentResolveNone;
     independentResolve = src.independentResolve;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::~safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::initialize(const VkPhysicalDeviceDepthStencilResolvePropertiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     supportedDepthResolveModes = in_struct->supportedDepthResolveModes;
     supportedStencilResolveModes = in_struct->supportedStencilResolveModes;
     independentResolveNone = in_struct->independentResolveNone;
     independentResolve = in_struct->independentResolve;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR::initialize(const safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     supportedDepthResolveModes = src->supportedDepthResolveModes;
     supportedStencilResolveModes = src->supportedStencilResolveModes;
     independentResolveNone = src->independentResolveNone;
     independentResolve = src->independentResolve;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR(const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     vulkanMemoryModel(in_struct->vulkanMemoryModel),
     vulkanMemoryModelDeviceScope(in_struct->vulkanMemoryModelDeviceScope),
     vulkanMemoryModelAvailabilityVisibilityChains(in_struct->vulkanMemoryModelAvailabilityVisibilityChains)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR()
@@ -13920,53 +14608,57 @@
 safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR(const safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     vulkanMemoryModel = src.vulkanMemoryModel;
     vulkanMemoryModelDeviceScope = src.vulkanMemoryModelDeviceScope;
     vulkanMemoryModelAvailabilityVisibilityChains = src.vulkanMemoryModelAvailabilityVisibilityChains;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::operator=(const safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     vulkanMemoryModel = src.vulkanMemoryModel;
     vulkanMemoryModelDeviceScope = src.vulkanMemoryModelDeviceScope;
     vulkanMemoryModelAvailabilityVisibilityChains = src.vulkanMemoryModelAvailabilityVisibilityChains;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::~safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::initialize(const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     vulkanMemoryModel = in_struct->vulkanMemoryModel;
     vulkanMemoryModelDeviceScope = in_struct->vulkanMemoryModelDeviceScope;
     vulkanMemoryModelAvailabilityVisibilityChains = in_struct->vulkanMemoryModelAvailabilityVisibilityChains;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR::initialize(const safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     vulkanMemoryModel = src->vulkanMemoryModel;
     vulkanMemoryModelDeviceScope = src->vulkanMemoryModelDeviceScope;
     vulkanMemoryModelAvailabilityVisibilityChains = src->vulkanMemoryModelAvailabilityVisibilityChains;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSurfaceProtectedCapabilitiesKHR::safe_VkSurfaceProtectedCapabilitiesKHR(const VkSurfaceProtectedCapabilitiesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     supportsProtected(in_struct->supportsProtected)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceProtectedCapabilitiesKHR::safe_VkSurfaceProtectedCapabilitiesKHR()
@@ -13975,45 +14667,49 @@
 safe_VkSurfaceProtectedCapabilitiesKHR::safe_VkSurfaceProtectedCapabilitiesKHR(const safe_VkSurfaceProtectedCapabilitiesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     supportsProtected = src.supportsProtected;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceProtectedCapabilitiesKHR& safe_VkSurfaceProtectedCapabilitiesKHR::operator=(const safe_VkSurfaceProtectedCapabilitiesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     supportsProtected = src.supportsProtected;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceProtectedCapabilitiesKHR::~safe_VkSurfaceProtectedCapabilitiesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceProtectedCapabilitiesKHR::initialize(const VkSurfaceProtectedCapabilitiesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     supportsProtected = in_struct->supportsProtected;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceProtectedCapabilitiesKHR::initialize(const safe_VkSurfaceProtectedCapabilitiesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     supportsProtected = src->supportsProtected;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR(const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     uniformBufferStandardLayout(in_struct->uniformBufferStandardLayout)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR()
@@ -14022,47 +14718,51 @@
 safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR(const safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     uniformBufferStandardLayout = src.uniformBufferStandardLayout;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::operator=(const safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     uniformBufferStandardLayout = src.uniformBufferStandardLayout;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::~safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::initialize(const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     uniformBufferStandardLayout = in_struct->uniformBufferStandardLayout;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR::initialize(const safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     uniformBufferStandardLayout = src->uniformBufferStandardLayout;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDebugReportCallbackCreateInfoEXT::safe_VkDebugReportCallbackCreateInfoEXT(const VkDebugReportCallbackCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     pfnCallback(in_struct->pfnCallback),
     pUserData(in_struct->pUserData)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDebugReportCallbackCreateInfoEXT::safe_VkDebugReportCallbackCreateInfoEXT()
@@ -14071,53 +14771,57 @@
 safe_VkDebugReportCallbackCreateInfoEXT::safe_VkDebugReportCallbackCreateInfoEXT(const safe_VkDebugReportCallbackCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pfnCallback = src.pfnCallback;
     pUserData = src.pUserData;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDebugReportCallbackCreateInfoEXT& safe_VkDebugReportCallbackCreateInfoEXT::operator=(const safe_VkDebugReportCallbackCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pfnCallback = src.pfnCallback;
     pUserData = src.pUserData;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDebugReportCallbackCreateInfoEXT::~safe_VkDebugReportCallbackCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugReportCallbackCreateInfoEXT::initialize(const VkDebugReportCallbackCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     pfnCallback = in_struct->pfnCallback;
     pUserData = in_struct->pUserData;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDebugReportCallbackCreateInfoEXT::initialize(const safe_VkDebugReportCallbackCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     pfnCallback = src->pfnCallback;
     pUserData = src->pUserData;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineRasterizationStateRasterizationOrderAMD::safe_VkPipelineRasterizationStateRasterizationOrderAMD(const VkPipelineRasterizationStateRasterizationOrderAMD* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     rasterizationOrder(in_struct->rasterizationOrder)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineRasterizationStateRasterizationOrderAMD::safe_VkPipelineRasterizationStateRasterizationOrderAMD()
@@ -14126,47 +14830,51 @@
 safe_VkPipelineRasterizationStateRasterizationOrderAMD::safe_VkPipelineRasterizationStateRasterizationOrderAMD(const safe_VkPipelineRasterizationStateRasterizationOrderAMD& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     rasterizationOrder = src.rasterizationOrder;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineRasterizationStateRasterizationOrderAMD& safe_VkPipelineRasterizationStateRasterizationOrderAMD::operator=(const safe_VkPipelineRasterizationStateRasterizationOrderAMD& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     rasterizationOrder = src.rasterizationOrder;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineRasterizationStateRasterizationOrderAMD::~safe_VkPipelineRasterizationStateRasterizationOrderAMD()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineRasterizationStateRasterizationOrderAMD::initialize(const VkPipelineRasterizationStateRasterizationOrderAMD* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     rasterizationOrder = in_struct->rasterizationOrder;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineRasterizationStateRasterizationOrderAMD::initialize(const safe_VkPipelineRasterizationStateRasterizationOrderAMD* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     rasterizationOrder = src->rasterizationOrder;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDebugMarkerObjectNameInfoEXT::safe_VkDebugMarkerObjectNameInfoEXT(const VkDebugMarkerObjectNameInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectType(in_struct->objectType),
     object(in_struct->object),
     pObjectName(in_struct->pObjectName)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDebugMarkerObjectNameInfoEXT::safe_VkDebugMarkerObjectNameInfoEXT()
@@ -14175,57 +14883,61 @@
 safe_VkDebugMarkerObjectNameInfoEXT::safe_VkDebugMarkerObjectNameInfoEXT(const safe_VkDebugMarkerObjectNameInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     object = src.object;
     pObjectName = src.pObjectName;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDebugMarkerObjectNameInfoEXT& safe_VkDebugMarkerObjectNameInfoEXT::operator=(const safe_VkDebugMarkerObjectNameInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     object = src.object;
     pObjectName = src.pObjectName;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDebugMarkerObjectNameInfoEXT::~safe_VkDebugMarkerObjectNameInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugMarkerObjectNameInfoEXT::initialize(const VkDebugMarkerObjectNameInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectType = in_struct->objectType;
     object = in_struct->object;
     pObjectName = in_struct->pObjectName;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDebugMarkerObjectNameInfoEXT::initialize(const safe_VkDebugMarkerObjectNameInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectType = src->objectType;
     object = src->object;
     pObjectName = src->pObjectName;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDebugMarkerObjectTagInfoEXT::safe_VkDebugMarkerObjectTagInfoEXT(const VkDebugMarkerObjectTagInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectType(in_struct->objectType),
     object(in_struct->object),
     tagName(in_struct->tagName),
     tagSize(in_struct->tagSize),
     pTag(in_struct->pTag)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDebugMarkerObjectTagInfoEXT::safe_VkDebugMarkerObjectTagInfoEXT()
@@ -14234,61 +14946,65 @@
 safe_VkDebugMarkerObjectTagInfoEXT::safe_VkDebugMarkerObjectTagInfoEXT(const safe_VkDebugMarkerObjectTagInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     object = src.object;
     tagName = src.tagName;
     tagSize = src.tagSize;
     pTag = src.pTag;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDebugMarkerObjectTagInfoEXT& safe_VkDebugMarkerObjectTagInfoEXT::operator=(const safe_VkDebugMarkerObjectTagInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     object = src.object;
     tagName = src.tagName;
     tagSize = src.tagSize;
     pTag = src.pTag;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDebugMarkerObjectTagInfoEXT::~safe_VkDebugMarkerObjectTagInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugMarkerObjectTagInfoEXT::initialize(const VkDebugMarkerObjectTagInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectType = in_struct->objectType;
     object = in_struct->object;
     tagName = in_struct->tagName;
     tagSize = in_struct->tagSize;
     pTag = in_struct->pTag;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDebugMarkerObjectTagInfoEXT::initialize(const safe_VkDebugMarkerObjectTagInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectType = src->objectType;
     object = src->object;
     tagName = src->tagName;
     tagSize = src->tagSize;
     pTag = src->pTag;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDebugMarkerMarkerInfoEXT::safe_VkDebugMarkerMarkerInfoEXT(const VkDebugMarkerMarkerInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pMarkerName(in_struct->pMarkerName)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = in_struct->color[i];
     }
@@ -14300,8 +15016,8 @@
 safe_VkDebugMarkerMarkerInfoEXT::safe_VkDebugMarkerMarkerInfoEXT(const safe_VkDebugMarkerMarkerInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pMarkerName = src.pMarkerName;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = src.color[i];
     }
@@ -14311,10 +15027,12 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pMarkerName = src.pMarkerName;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = src.color[i];
     }
@@ -14324,13 +15042,15 @@
 
 safe_VkDebugMarkerMarkerInfoEXT::~safe_VkDebugMarkerMarkerInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugMarkerMarkerInfoEXT::initialize(const VkDebugMarkerMarkerInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pMarkerName = in_struct->pMarkerName;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = in_struct->color[i];
     }
@@ -14339,8 +15059,8 @@
 void safe_VkDebugMarkerMarkerInfoEXT::initialize(const safe_VkDebugMarkerMarkerInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pMarkerName = src->pMarkerName;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = src->color[i];
     }
@@ -14348,9 +15068,9 @@
 
 safe_VkDedicatedAllocationImageCreateInfoNV::safe_VkDedicatedAllocationImageCreateInfoNV(const VkDedicatedAllocationImageCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     dedicatedAllocation(in_struct->dedicatedAllocation)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDedicatedAllocationImageCreateInfoNV::safe_VkDedicatedAllocationImageCreateInfoNV()
@@ -14359,45 +15079,49 @@
 safe_VkDedicatedAllocationImageCreateInfoNV::safe_VkDedicatedAllocationImageCreateInfoNV(const safe_VkDedicatedAllocationImageCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     dedicatedAllocation = src.dedicatedAllocation;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDedicatedAllocationImageCreateInfoNV& safe_VkDedicatedAllocationImageCreateInfoNV::operator=(const safe_VkDedicatedAllocationImageCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     dedicatedAllocation = src.dedicatedAllocation;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDedicatedAllocationImageCreateInfoNV::~safe_VkDedicatedAllocationImageCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDedicatedAllocationImageCreateInfoNV::initialize(const VkDedicatedAllocationImageCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     dedicatedAllocation = in_struct->dedicatedAllocation;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDedicatedAllocationImageCreateInfoNV::initialize(const safe_VkDedicatedAllocationImageCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     dedicatedAllocation = src->dedicatedAllocation;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDedicatedAllocationBufferCreateInfoNV::safe_VkDedicatedAllocationBufferCreateInfoNV(const VkDedicatedAllocationBufferCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     dedicatedAllocation(in_struct->dedicatedAllocation)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDedicatedAllocationBufferCreateInfoNV::safe_VkDedicatedAllocationBufferCreateInfoNV()
@@ -14406,46 +15130,50 @@
 safe_VkDedicatedAllocationBufferCreateInfoNV::safe_VkDedicatedAllocationBufferCreateInfoNV(const safe_VkDedicatedAllocationBufferCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     dedicatedAllocation = src.dedicatedAllocation;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDedicatedAllocationBufferCreateInfoNV& safe_VkDedicatedAllocationBufferCreateInfoNV::operator=(const safe_VkDedicatedAllocationBufferCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     dedicatedAllocation = src.dedicatedAllocation;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDedicatedAllocationBufferCreateInfoNV::~safe_VkDedicatedAllocationBufferCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDedicatedAllocationBufferCreateInfoNV::initialize(const VkDedicatedAllocationBufferCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     dedicatedAllocation = in_struct->dedicatedAllocation;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDedicatedAllocationBufferCreateInfoNV::initialize(const safe_VkDedicatedAllocationBufferCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     dedicatedAllocation = src->dedicatedAllocation;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDedicatedAllocationMemoryAllocateInfoNV::safe_VkDedicatedAllocationMemoryAllocateInfoNV(const VkDedicatedAllocationMemoryAllocateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     image(in_struct->image),
     buffer(in_struct->buffer)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDedicatedAllocationMemoryAllocateInfoNV::safe_VkDedicatedAllocationMemoryAllocateInfoNV()
@@ -14454,50 +15182,54 @@
 safe_VkDedicatedAllocationMemoryAllocateInfoNV::safe_VkDedicatedAllocationMemoryAllocateInfoNV(const safe_VkDedicatedAllocationMemoryAllocateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDedicatedAllocationMemoryAllocateInfoNV& safe_VkDedicatedAllocationMemoryAllocateInfoNV::operator=(const safe_VkDedicatedAllocationMemoryAllocateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     image = src.image;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDedicatedAllocationMemoryAllocateInfoNV::~safe_VkDedicatedAllocationMemoryAllocateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDedicatedAllocationMemoryAllocateInfoNV::initialize(const VkDedicatedAllocationMemoryAllocateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     image = in_struct->image;
     buffer = in_struct->buffer;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDedicatedAllocationMemoryAllocateInfoNV::initialize(const safe_VkDedicatedAllocationMemoryAllocateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     image = src->image;
     buffer = src->buffer;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT(const VkPhysicalDeviceTransformFeedbackFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     transformFeedback(in_struct->transformFeedback),
     geometryStreams(in_struct->geometryStreams)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT()
@@ -14506,47 +15238,50 @@
 safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT(const safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     transformFeedback = src.transformFeedback;
     geometryStreams = src.geometryStreams;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT& safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::operator=(const safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     transformFeedback = src.transformFeedback;
     geometryStreams = src.geometryStreams;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::~safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::initialize(const VkPhysicalDeviceTransformFeedbackFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     transformFeedback = in_struct->transformFeedback;
     geometryStreams = in_struct->geometryStreams;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT::initialize(const safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     transformFeedback = src->transformFeedback;
     geometryStreams = src->geometryStreams;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT(const VkPhysicalDeviceTransformFeedbackPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxTransformFeedbackStreams(in_struct->maxTransformFeedbackStreams),
     maxTransformFeedbackBuffers(in_struct->maxTransformFeedbackBuffers),
     maxTransformFeedbackBufferSize(in_struct->maxTransformFeedbackBufferSize),
@@ -14558,6 +15293,7 @@
     transformFeedbackRasterizationStreamSelect(in_struct->transformFeedbackRasterizationStreamSelect),
     transformFeedbackDraw(in_struct->transformFeedbackDraw)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT()
@@ -14566,7 +15302,6 @@
 safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT(const safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxTransformFeedbackStreams = src.maxTransformFeedbackStreams;
     maxTransformFeedbackBuffers = src.maxTransformFeedbackBuffers;
     maxTransformFeedbackBufferSize = src.maxTransformFeedbackBufferSize;
@@ -14577,15 +15312,17 @@
     transformFeedbackStreamsLinesTriangles = src.transformFeedbackStreamsLinesTriangles;
     transformFeedbackRasterizationStreamSelect = src.transformFeedbackRasterizationStreamSelect;
     transformFeedbackDraw = src.transformFeedbackDraw;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT& safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::operator=(const safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxTransformFeedbackStreams = src.maxTransformFeedbackStreams;
     maxTransformFeedbackBuffers = src.maxTransformFeedbackBuffers;
     maxTransformFeedbackBufferSize = src.maxTransformFeedbackBufferSize;
@@ -14596,18 +15333,20 @@
     transformFeedbackStreamsLinesTriangles = src.transformFeedbackStreamsLinesTriangles;
     transformFeedbackRasterizationStreamSelect = src.transformFeedbackRasterizationStreamSelect;
     transformFeedbackDraw = src.transformFeedbackDraw;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::~safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::initialize(const VkPhysicalDeviceTransformFeedbackPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxTransformFeedbackStreams = in_struct->maxTransformFeedbackStreams;
     maxTransformFeedbackBuffers = in_struct->maxTransformFeedbackBuffers;
     maxTransformFeedbackBufferSize = in_struct->maxTransformFeedbackBufferSize;
@@ -14618,12 +15357,12 @@
     transformFeedbackStreamsLinesTriangles = in_struct->transformFeedbackStreamsLinesTriangles;
     transformFeedbackRasterizationStreamSelect = in_struct->transformFeedbackRasterizationStreamSelect;
     transformFeedbackDraw = in_struct->transformFeedbackDraw;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT::initialize(const safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxTransformFeedbackStreams = src->maxTransformFeedbackStreams;
     maxTransformFeedbackBuffers = src->maxTransformFeedbackBuffers;
     maxTransformFeedbackBufferSize = src->maxTransformFeedbackBufferSize;
@@ -14634,14 +15373,15 @@
     transformFeedbackStreamsLinesTriangles = src->transformFeedbackStreamsLinesTriangles;
     transformFeedbackRasterizationStreamSelect = src->transformFeedbackRasterizationStreamSelect;
     transformFeedbackDraw = src->transformFeedbackDraw;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineRasterizationStateStreamCreateInfoEXT::safe_VkPipelineRasterizationStateStreamCreateInfoEXT(const VkPipelineRasterizationStateStreamCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     rasterizationStream(in_struct->rasterizationStream)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineRasterizationStateStreamCreateInfoEXT::safe_VkPipelineRasterizationStateStreamCreateInfoEXT()
@@ -14650,51 +15390,55 @@
 safe_VkPipelineRasterizationStateStreamCreateInfoEXT::safe_VkPipelineRasterizationStateStreamCreateInfoEXT(const safe_VkPipelineRasterizationStateStreamCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     rasterizationStream = src.rasterizationStream;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineRasterizationStateStreamCreateInfoEXT& safe_VkPipelineRasterizationStateStreamCreateInfoEXT::operator=(const safe_VkPipelineRasterizationStateStreamCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     rasterizationStream = src.rasterizationStream;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineRasterizationStateStreamCreateInfoEXT::~safe_VkPipelineRasterizationStateStreamCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineRasterizationStateStreamCreateInfoEXT::initialize(const VkPipelineRasterizationStateStreamCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     rasterizationStream = in_struct->rasterizationStream;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineRasterizationStateStreamCreateInfoEXT::initialize(const safe_VkPipelineRasterizationStateStreamCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     rasterizationStream = src->rasterizationStream;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageViewHandleInfoNVX::safe_VkImageViewHandleInfoNVX(const VkImageViewHandleInfoNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     imageView(in_struct->imageView),
     descriptorType(in_struct->descriptorType),
     sampler(in_struct->sampler)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageViewHandleInfoNVX::safe_VkImageViewHandleInfoNVX()
@@ -14703,53 +15447,57 @@
 safe_VkImageViewHandleInfoNVX::safe_VkImageViewHandleInfoNVX(const safe_VkImageViewHandleInfoNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     imageView = src.imageView;
     descriptorType = src.descriptorType;
     sampler = src.sampler;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageViewHandleInfoNVX& safe_VkImageViewHandleInfoNVX::operator=(const safe_VkImageViewHandleInfoNVX& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     imageView = src.imageView;
     descriptorType = src.descriptorType;
     sampler = src.sampler;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageViewHandleInfoNVX::~safe_VkImageViewHandleInfoNVX()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageViewHandleInfoNVX::initialize(const VkImageViewHandleInfoNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     imageView = in_struct->imageView;
     descriptorType = in_struct->descriptorType;
     sampler = in_struct->sampler;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageViewHandleInfoNVX::initialize(const safe_VkImageViewHandleInfoNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     imageView = src->imageView;
     descriptorType = src->descriptorType;
     sampler = src->sampler;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkTextureLODGatherFormatPropertiesAMD::safe_VkTextureLODGatherFormatPropertiesAMD(const VkTextureLODGatherFormatPropertiesAMD* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     supportsTextureGatherLODBiasAMD(in_struct->supportsTextureGatherLODBiasAMD)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkTextureLODGatherFormatPropertiesAMD::safe_VkTextureLODGatherFormatPropertiesAMD()
@@ -14758,48 +15506,52 @@
 safe_VkTextureLODGatherFormatPropertiesAMD::safe_VkTextureLODGatherFormatPropertiesAMD(const safe_VkTextureLODGatherFormatPropertiesAMD& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     supportsTextureGatherLODBiasAMD = src.supportsTextureGatherLODBiasAMD;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkTextureLODGatherFormatPropertiesAMD& safe_VkTextureLODGatherFormatPropertiesAMD::operator=(const safe_VkTextureLODGatherFormatPropertiesAMD& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     supportsTextureGatherLODBiasAMD = src.supportsTextureGatherLODBiasAMD;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkTextureLODGatherFormatPropertiesAMD::~safe_VkTextureLODGatherFormatPropertiesAMD()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkTextureLODGatherFormatPropertiesAMD::initialize(const VkTextureLODGatherFormatPropertiesAMD* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     supportsTextureGatherLODBiasAMD = in_struct->supportsTextureGatherLODBiasAMD;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkTextureLODGatherFormatPropertiesAMD::initialize(const safe_VkTextureLODGatherFormatPropertiesAMD* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     supportsTextureGatherLODBiasAMD = src->supportsTextureGatherLODBiasAMD;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_GGP
 
 
 safe_VkStreamDescriptorSurfaceCreateInfoGGP::safe_VkStreamDescriptorSurfaceCreateInfoGGP(const VkStreamDescriptorSurfaceCreateInfoGGP* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     streamDescriptor(in_struct->streamDescriptor)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkStreamDescriptorSurfaceCreateInfoGGP::safe_VkStreamDescriptorSurfaceCreateInfoGGP()
@@ -14808,51 +15560,55 @@
 safe_VkStreamDescriptorSurfaceCreateInfoGGP::safe_VkStreamDescriptorSurfaceCreateInfoGGP(const safe_VkStreamDescriptorSurfaceCreateInfoGGP& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     streamDescriptor = src.streamDescriptor;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkStreamDescriptorSurfaceCreateInfoGGP& safe_VkStreamDescriptorSurfaceCreateInfoGGP::operator=(const safe_VkStreamDescriptorSurfaceCreateInfoGGP& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     streamDescriptor = src.streamDescriptor;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkStreamDescriptorSurfaceCreateInfoGGP::~safe_VkStreamDescriptorSurfaceCreateInfoGGP()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkStreamDescriptorSurfaceCreateInfoGGP::initialize(const VkStreamDescriptorSurfaceCreateInfoGGP* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     streamDescriptor = in_struct->streamDescriptor;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkStreamDescriptorSurfaceCreateInfoGGP::initialize(const safe_VkStreamDescriptorSurfaceCreateInfoGGP* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     streamDescriptor = src->streamDescriptor;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_GGP
 
 
 safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::safe_VkPhysicalDeviceCornerSampledImageFeaturesNV(const VkPhysicalDeviceCornerSampledImageFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     cornerSampledImage(in_struct->cornerSampledImage)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::safe_VkPhysicalDeviceCornerSampledImageFeaturesNV()
@@ -14861,45 +15617,49 @@
 safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::safe_VkPhysicalDeviceCornerSampledImageFeaturesNV(const safe_VkPhysicalDeviceCornerSampledImageFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     cornerSampledImage = src.cornerSampledImage;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceCornerSampledImageFeaturesNV& safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::operator=(const safe_VkPhysicalDeviceCornerSampledImageFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     cornerSampledImage = src.cornerSampledImage;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::~safe_VkPhysicalDeviceCornerSampledImageFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::initialize(const VkPhysicalDeviceCornerSampledImageFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     cornerSampledImage = in_struct->cornerSampledImage;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceCornerSampledImageFeaturesNV::initialize(const safe_VkPhysicalDeviceCornerSampledImageFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     cornerSampledImage = src->cornerSampledImage;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExternalMemoryImageCreateInfoNV::safe_VkExternalMemoryImageCreateInfoNV(const VkExternalMemoryImageCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalMemoryImageCreateInfoNV::safe_VkExternalMemoryImageCreateInfoNV()
@@ -14908,45 +15668,49 @@
 safe_VkExternalMemoryImageCreateInfoNV::safe_VkExternalMemoryImageCreateInfoNV(const safe_VkExternalMemoryImageCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalMemoryImageCreateInfoNV& safe_VkExternalMemoryImageCreateInfoNV::operator=(const safe_VkExternalMemoryImageCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalMemoryImageCreateInfoNV::~safe_VkExternalMemoryImageCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalMemoryImageCreateInfoNV::initialize(const VkExternalMemoryImageCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalMemoryImageCreateInfoNV::initialize(const safe_VkExternalMemoryImageCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkExportMemoryAllocateInfoNV::safe_VkExportMemoryAllocateInfoNV(const VkExportMemoryAllocateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleTypes(in_struct->handleTypes)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExportMemoryAllocateInfoNV::safe_VkExportMemoryAllocateInfoNV()
@@ -14955,48 +15719,52 @@
 safe_VkExportMemoryAllocateInfoNV::safe_VkExportMemoryAllocateInfoNV(const safe_VkExportMemoryAllocateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExportMemoryAllocateInfoNV& safe_VkExportMemoryAllocateInfoNV::operator=(const safe_VkExportMemoryAllocateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleTypes = src.handleTypes;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExportMemoryAllocateInfoNV::~safe_VkExportMemoryAllocateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportMemoryAllocateInfoNV::initialize(const VkExportMemoryAllocateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleTypes = in_struct->handleTypes;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExportMemoryAllocateInfoNV::initialize(const safe_VkExportMemoryAllocateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleTypes = src->handleTypes;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkImportMemoryWin32HandleInfoNV::safe_VkImportMemoryWin32HandleInfoNV(const VkImportMemoryWin32HandleInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType),
     handle(in_struct->handle)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportMemoryWin32HandleInfoNV::safe_VkImportMemoryWin32HandleInfoNV()
@@ -15005,42 +15773,46 @@
 safe_VkImportMemoryWin32HandleInfoNV::safe_VkImportMemoryWin32HandleInfoNV(const safe_VkImportMemoryWin32HandleInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     handle = src.handle;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportMemoryWin32HandleInfoNV& safe_VkImportMemoryWin32HandleInfoNV::operator=(const safe_VkImportMemoryWin32HandleInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     handle = src.handle;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportMemoryWin32HandleInfoNV::~safe_VkImportMemoryWin32HandleInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportMemoryWin32HandleInfoNV::initialize(const VkImportMemoryWin32HandleInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
     handle = in_struct->handle;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportMemoryWin32HandleInfoNV::initialize(const safe_VkImportMemoryWin32HandleInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
     handle = src->handle;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -15049,10 +15821,10 @@
 
 safe_VkExportMemoryWin32HandleInfoNV::safe_VkExportMemoryWin32HandleInfoNV(const VkExportMemoryWin32HandleInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pAttributes(nullptr),
     dwAccess(in_struct->dwAccess)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -15065,9 +15837,9 @@
 safe_VkExportMemoryWin32HandleInfoNV::safe_VkExportMemoryWin32HandleInfoNV(const safe_VkExportMemoryWin32HandleInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -15079,11 +15851,13 @@
 
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pAttributes = nullptr;
     dwAccess = src.dwAccess;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src.pAttributes);
     }
@@ -15095,14 +15869,16 @@
 {
     if (pAttributes)
         delete pAttributes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExportMemoryWin32HandleInfoNV::initialize(const VkExportMemoryWin32HandleInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pAttributes = nullptr;
     dwAccess = in_struct->dwAccess;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*in_struct->pAttributes);
     }
@@ -15111,9 +15887,9 @@
 void safe_VkExportMemoryWin32HandleInfoNV::initialize(const safe_VkExportMemoryWin32HandleInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pAttributes = nullptr;
     dwAccess = src->dwAccess;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttributes) {
         pAttributes = new SECURITY_ATTRIBUTES(*src->pAttributes);
     }
@@ -15125,7 +15901,6 @@
 
 safe_VkWin32KeyedMutexAcquireReleaseInfoNV::safe_VkWin32KeyedMutexAcquireReleaseInfoNV(const VkWin32KeyedMutexAcquireReleaseInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     acquireCount(in_struct->acquireCount),
     pAcquireSyncs(nullptr),
     pAcquireKeys(nullptr),
@@ -15134,6 +15909,7 @@
     pReleaseSyncs(nullptr),
     pReleaseKeys(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (acquireCount && in_struct->pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -15171,7 +15947,6 @@
 safe_VkWin32KeyedMutexAcquireReleaseInfoNV::safe_VkWin32KeyedMutexAcquireReleaseInfoNV(const safe_VkWin32KeyedMutexAcquireReleaseInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     acquireCount = src.acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -15179,6 +15954,7 @@
     releaseCount = src.releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (acquireCount && src.pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -15219,9 +15995,10 @@
         delete[] pReleaseSyncs;
     if (pReleaseKeys)
         delete[] pReleaseKeys;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     acquireCount = src.acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -15229,6 +16006,7 @@
     releaseCount = src.releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (acquireCount && src.pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -15269,12 +16047,13 @@
         delete[] pReleaseSyncs;
     if (pReleaseKeys)
         delete[] pReleaseKeys;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkWin32KeyedMutexAcquireReleaseInfoNV::initialize(const VkWin32KeyedMutexAcquireReleaseInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     acquireCount = in_struct->acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -15282,6 +16061,7 @@
     releaseCount = in_struct->releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (acquireCount && in_struct->pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -15311,7 +16091,6 @@
 void safe_VkWin32KeyedMutexAcquireReleaseInfoNV::initialize(const safe_VkWin32KeyedMutexAcquireReleaseInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     acquireCount = src->acquireCount;
     pAcquireSyncs = nullptr;
     pAcquireKeys = nullptr;
@@ -15319,6 +16098,7 @@
     releaseCount = src->releaseCount;
     pReleaseSyncs = nullptr;
     pReleaseKeys = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (acquireCount && src->pAcquireSyncs) {
         pAcquireSyncs = new VkDeviceMemory[acquireCount];
         for (uint32_t i=0; i<acquireCount; ++i) {
@@ -15349,10 +16129,10 @@
 
 safe_VkValidationFlagsEXT::safe_VkValidationFlagsEXT(const VkValidationFlagsEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     disabledValidationCheckCount(in_struct->disabledValidationCheckCount),
     pDisabledValidationChecks(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDisabledValidationChecks) {
         pDisabledValidationChecks = new VkValidationCheckEXT[in_struct->disabledValidationCheckCount];
         memcpy ((void *)pDisabledValidationChecks, (void *)in_struct->pDisabledValidationChecks, sizeof(VkValidationCheckEXT)*in_struct->disabledValidationCheckCount);
@@ -15366,9 +16146,9 @@
 safe_VkValidationFlagsEXT::safe_VkValidationFlagsEXT(const safe_VkValidationFlagsEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     disabledValidationCheckCount = src.disabledValidationCheckCount;
     pDisabledValidationChecks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDisabledValidationChecks) {
         pDisabledValidationChecks = new VkValidationCheckEXT[src.disabledValidationCheckCount];
         memcpy ((void *)pDisabledValidationChecks, (void *)src.pDisabledValidationChecks, sizeof(VkValidationCheckEXT)*src.disabledValidationCheckCount);
@@ -15381,11 +16161,13 @@
 
     if (pDisabledValidationChecks)
         delete[] pDisabledValidationChecks;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     disabledValidationCheckCount = src.disabledValidationCheckCount;
     pDisabledValidationChecks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDisabledValidationChecks) {
         pDisabledValidationChecks = new VkValidationCheckEXT[src.disabledValidationCheckCount];
         memcpy ((void *)pDisabledValidationChecks, (void *)src.pDisabledValidationChecks, sizeof(VkValidationCheckEXT)*src.disabledValidationCheckCount);
@@ -15398,14 +16180,16 @@
 {
     if (pDisabledValidationChecks)
         delete[] pDisabledValidationChecks;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkValidationFlagsEXT::initialize(const VkValidationFlagsEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     disabledValidationCheckCount = in_struct->disabledValidationCheckCount;
     pDisabledValidationChecks = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDisabledValidationChecks) {
         pDisabledValidationChecks = new VkValidationCheckEXT[in_struct->disabledValidationCheckCount];
         memcpy ((void *)pDisabledValidationChecks, (void *)in_struct->pDisabledValidationChecks, sizeof(VkValidationCheckEXT)*in_struct->disabledValidationCheckCount);
@@ -15415,9 +16199,9 @@
 void safe_VkValidationFlagsEXT::initialize(const safe_VkValidationFlagsEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     disabledValidationCheckCount = src->disabledValidationCheckCount;
     pDisabledValidationChecks = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDisabledValidationChecks) {
         pDisabledValidationChecks = new VkValidationCheckEXT[src->disabledValidationCheckCount];
         memcpy ((void *)pDisabledValidationChecks, (void *)src->pDisabledValidationChecks, sizeof(VkValidationCheckEXT)*src->disabledValidationCheckCount);
@@ -15428,10 +16212,10 @@
 
 safe_VkViSurfaceCreateInfoNN::safe_VkViSurfaceCreateInfoNN(const VkViSurfaceCreateInfoNN* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     window(in_struct->window)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkViSurfaceCreateInfoNN::safe_VkViSurfaceCreateInfoNN()
@@ -15440,51 +16224,55 @@
 safe_VkViSurfaceCreateInfoNN::safe_VkViSurfaceCreateInfoNN(const safe_VkViSurfaceCreateInfoNN& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     window = src.window;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkViSurfaceCreateInfoNN& safe_VkViSurfaceCreateInfoNN::operator=(const safe_VkViSurfaceCreateInfoNN& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     window = src.window;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkViSurfaceCreateInfoNN::~safe_VkViSurfaceCreateInfoNN()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkViSurfaceCreateInfoNN::initialize(const VkViSurfaceCreateInfoNN* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     window = in_struct->window;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkViSurfaceCreateInfoNN::initialize(const safe_VkViSurfaceCreateInfoNN* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     window = src->window;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_VI_NN
 
 
 safe_VkImageViewASTCDecodeModeEXT::safe_VkImageViewASTCDecodeModeEXT(const VkImageViewASTCDecodeModeEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     decodeMode(in_struct->decodeMode)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageViewASTCDecodeModeEXT::safe_VkImageViewASTCDecodeModeEXT()
@@ -15493,45 +16281,49 @@
 safe_VkImageViewASTCDecodeModeEXT::safe_VkImageViewASTCDecodeModeEXT(const safe_VkImageViewASTCDecodeModeEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     decodeMode = src.decodeMode;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageViewASTCDecodeModeEXT& safe_VkImageViewASTCDecodeModeEXT::operator=(const safe_VkImageViewASTCDecodeModeEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     decodeMode = src.decodeMode;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageViewASTCDecodeModeEXT::~safe_VkImageViewASTCDecodeModeEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageViewASTCDecodeModeEXT::initialize(const VkImageViewASTCDecodeModeEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     decodeMode = in_struct->decodeMode;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageViewASTCDecodeModeEXT::initialize(const safe_VkImageViewASTCDecodeModeEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     decodeMode = src->decodeMode;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::safe_VkPhysicalDeviceASTCDecodeFeaturesEXT(const VkPhysicalDeviceASTCDecodeFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     decodeModeSharedExponent(in_struct->decodeModeSharedExponent)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::safe_VkPhysicalDeviceASTCDecodeFeaturesEXT()
@@ -15540,47 +16332,51 @@
 safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::safe_VkPhysicalDeviceASTCDecodeFeaturesEXT(const safe_VkPhysicalDeviceASTCDecodeFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     decodeModeSharedExponent = src.decodeModeSharedExponent;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceASTCDecodeFeaturesEXT& safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::operator=(const safe_VkPhysicalDeviceASTCDecodeFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     decodeModeSharedExponent = src.decodeModeSharedExponent;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::~safe_VkPhysicalDeviceASTCDecodeFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::initialize(const VkPhysicalDeviceASTCDecodeFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     decodeModeSharedExponent = in_struct->decodeModeSharedExponent;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceASTCDecodeFeaturesEXT::initialize(const safe_VkPhysicalDeviceASTCDecodeFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     decodeModeSharedExponent = src->decodeModeSharedExponent;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkConditionalRenderingBeginInfoEXT::safe_VkConditionalRenderingBeginInfoEXT(const VkConditionalRenderingBeginInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     buffer(in_struct->buffer),
     offset(in_struct->offset),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkConditionalRenderingBeginInfoEXT::safe_VkConditionalRenderingBeginInfoEXT()
@@ -15589,54 +16385,58 @@
 safe_VkConditionalRenderingBeginInfoEXT::safe_VkConditionalRenderingBeginInfoEXT(const safe_VkConditionalRenderingBeginInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
     offset = src.offset;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkConditionalRenderingBeginInfoEXT& safe_VkConditionalRenderingBeginInfoEXT::operator=(const safe_VkConditionalRenderingBeginInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
     offset = src.offset;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkConditionalRenderingBeginInfoEXT::~safe_VkConditionalRenderingBeginInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkConditionalRenderingBeginInfoEXT::initialize(const VkConditionalRenderingBeginInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     buffer = in_struct->buffer;
     offset = in_struct->offset;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkConditionalRenderingBeginInfoEXT::initialize(const safe_VkConditionalRenderingBeginInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     buffer = src->buffer;
     offset = src->offset;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT(const VkPhysicalDeviceConditionalRenderingFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     conditionalRendering(in_struct->conditionalRendering),
     inheritedConditionalRendering(in_struct->inheritedConditionalRendering)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT()
@@ -15645,49 +16445,53 @@
 safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT(const safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     conditionalRendering = src.conditionalRendering;
     inheritedConditionalRendering = src.inheritedConditionalRendering;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT& safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::operator=(const safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     conditionalRendering = src.conditionalRendering;
     inheritedConditionalRendering = src.inheritedConditionalRendering;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::~safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::initialize(const VkPhysicalDeviceConditionalRenderingFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     conditionalRendering = in_struct->conditionalRendering;
     inheritedConditionalRendering = in_struct->inheritedConditionalRendering;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT::initialize(const safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     conditionalRendering = src->conditionalRendering;
     inheritedConditionalRendering = src->inheritedConditionalRendering;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT(const VkCommandBufferInheritanceConditionalRenderingInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     conditionalRenderingEnable(in_struct->conditionalRenderingEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT()
@@ -15696,45 +16500,49 @@
 safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT(const safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     conditionalRenderingEnable = src.conditionalRenderingEnable;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT& safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::operator=(const safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     conditionalRenderingEnable = src.conditionalRenderingEnable;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::~safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::initialize(const VkCommandBufferInheritanceConditionalRenderingInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     conditionalRenderingEnable = in_struct->conditionalRenderingEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT::initialize(const safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     conditionalRenderingEnable = src->conditionalRenderingEnable;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceGeneratedCommandsFeaturesNVX::safe_VkDeviceGeneratedCommandsFeaturesNVX(const VkDeviceGeneratedCommandsFeaturesNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     computeBindingPointSupport(in_struct->computeBindingPointSupport)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceGeneratedCommandsFeaturesNVX::safe_VkDeviceGeneratedCommandsFeaturesNVX()
@@ -15743,49 +16551,53 @@
 safe_VkDeviceGeneratedCommandsFeaturesNVX::safe_VkDeviceGeneratedCommandsFeaturesNVX(const safe_VkDeviceGeneratedCommandsFeaturesNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     computeBindingPointSupport = src.computeBindingPointSupport;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceGeneratedCommandsFeaturesNVX& safe_VkDeviceGeneratedCommandsFeaturesNVX::operator=(const safe_VkDeviceGeneratedCommandsFeaturesNVX& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     computeBindingPointSupport = src.computeBindingPointSupport;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceGeneratedCommandsFeaturesNVX::~safe_VkDeviceGeneratedCommandsFeaturesNVX()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGeneratedCommandsFeaturesNVX::initialize(const VkDeviceGeneratedCommandsFeaturesNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     computeBindingPointSupport = in_struct->computeBindingPointSupport;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceGeneratedCommandsFeaturesNVX::initialize(const safe_VkDeviceGeneratedCommandsFeaturesNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     computeBindingPointSupport = src->computeBindingPointSupport;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceGeneratedCommandsLimitsNVX::safe_VkDeviceGeneratedCommandsLimitsNVX(const VkDeviceGeneratedCommandsLimitsNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxIndirectCommandsLayoutTokenCount(in_struct->maxIndirectCommandsLayoutTokenCount),
     maxObjectEntryCounts(in_struct->maxObjectEntryCounts),
     minSequenceCountBufferOffsetAlignment(in_struct->minSequenceCountBufferOffsetAlignment),
     minSequenceIndexBufferOffsetAlignment(in_struct->minSequenceIndexBufferOffsetAlignment),
     minCommandsTokenBufferOffsetAlignment(in_struct->minCommandsTokenBufferOffsetAlignment)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceGeneratedCommandsLimitsNVX::safe_VkDeviceGeneratedCommandsLimitsNVX()
@@ -15794,64 +16606,68 @@
 safe_VkDeviceGeneratedCommandsLimitsNVX::safe_VkDeviceGeneratedCommandsLimitsNVX(const safe_VkDeviceGeneratedCommandsLimitsNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxIndirectCommandsLayoutTokenCount = src.maxIndirectCommandsLayoutTokenCount;
     maxObjectEntryCounts = src.maxObjectEntryCounts;
     minSequenceCountBufferOffsetAlignment = src.minSequenceCountBufferOffsetAlignment;
     minSequenceIndexBufferOffsetAlignment = src.minSequenceIndexBufferOffsetAlignment;
     minCommandsTokenBufferOffsetAlignment = src.minCommandsTokenBufferOffsetAlignment;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceGeneratedCommandsLimitsNVX& safe_VkDeviceGeneratedCommandsLimitsNVX::operator=(const safe_VkDeviceGeneratedCommandsLimitsNVX& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxIndirectCommandsLayoutTokenCount = src.maxIndirectCommandsLayoutTokenCount;
     maxObjectEntryCounts = src.maxObjectEntryCounts;
     minSequenceCountBufferOffsetAlignment = src.minSequenceCountBufferOffsetAlignment;
     minSequenceIndexBufferOffsetAlignment = src.minSequenceIndexBufferOffsetAlignment;
     minCommandsTokenBufferOffsetAlignment = src.minCommandsTokenBufferOffsetAlignment;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceGeneratedCommandsLimitsNVX::~safe_VkDeviceGeneratedCommandsLimitsNVX()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceGeneratedCommandsLimitsNVX::initialize(const VkDeviceGeneratedCommandsLimitsNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxIndirectCommandsLayoutTokenCount = in_struct->maxIndirectCommandsLayoutTokenCount;
     maxObjectEntryCounts = in_struct->maxObjectEntryCounts;
     minSequenceCountBufferOffsetAlignment = in_struct->minSequenceCountBufferOffsetAlignment;
     minSequenceIndexBufferOffsetAlignment = in_struct->minSequenceIndexBufferOffsetAlignment;
     minCommandsTokenBufferOffsetAlignment = in_struct->minCommandsTokenBufferOffsetAlignment;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceGeneratedCommandsLimitsNVX::initialize(const safe_VkDeviceGeneratedCommandsLimitsNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxIndirectCommandsLayoutTokenCount = src->maxIndirectCommandsLayoutTokenCount;
     maxObjectEntryCounts = src->maxObjectEntryCounts;
     minSequenceCountBufferOffsetAlignment = src->minSequenceCountBufferOffsetAlignment;
     minSequenceIndexBufferOffsetAlignment = src->minSequenceIndexBufferOffsetAlignment;
     minCommandsTokenBufferOffsetAlignment = src->minCommandsTokenBufferOffsetAlignment;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkIndirectCommandsLayoutCreateInfoNVX::safe_VkIndirectCommandsLayoutCreateInfoNVX(const VkIndirectCommandsLayoutCreateInfoNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pipelineBindPoint(in_struct->pipelineBindPoint),
     flags(in_struct->flags),
     tokenCount(in_struct->tokenCount),
     pTokens(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pTokens) {
         pTokens = new VkIndirectCommandsLayoutTokenNVX[in_struct->tokenCount];
         memcpy ((void *)pTokens, (void *)in_struct->pTokens, sizeof(VkIndirectCommandsLayoutTokenNVX)*in_struct->tokenCount);
@@ -15865,11 +16681,11 @@
 safe_VkIndirectCommandsLayoutCreateInfoNVX::safe_VkIndirectCommandsLayoutCreateInfoNVX(const safe_VkIndirectCommandsLayoutCreateInfoNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pipelineBindPoint = src.pipelineBindPoint;
     flags = src.flags;
     tokenCount = src.tokenCount;
     pTokens = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pTokens) {
         pTokens = new VkIndirectCommandsLayoutTokenNVX[src.tokenCount];
         memcpy ((void *)pTokens, (void *)src.pTokens, sizeof(VkIndirectCommandsLayoutTokenNVX)*src.tokenCount);
@@ -15882,13 +16698,15 @@
 
     if (pTokens)
         delete[] pTokens;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pipelineBindPoint = src.pipelineBindPoint;
     flags = src.flags;
     tokenCount = src.tokenCount;
     pTokens = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pTokens) {
         pTokens = new VkIndirectCommandsLayoutTokenNVX[src.tokenCount];
         memcpy ((void *)pTokens, (void *)src.pTokens, sizeof(VkIndirectCommandsLayoutTokenNVX)*src.tokenCount);
@@ -15901,16 +16719,18 @@
 {
     if (pTokens)
         delete[] pTokens;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkIndirectCommandsLayoutCreateInfoNVX::initialize(const VkIndirectCommandsLayoutCreateInfoNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pipelineBindPoint = in_struct->pipelineBindPoint;
     flags = in_struct->flags;
     tokenCount = in_struct->tokenCount;
     pTokens = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pTokens) {
         pTokens = new VkIndirectCommandsLayoutTokenNVX[in_struct->tokenCount];
         memcpy ((void *)pTokens, (void *)in_struct->pTokens, sizeof(VkIndirectCommandsLayoutTokenNVX)*in_struct->tokenCount);
@@ -15920,11 +16740,11 @@
 void safe_VkIndirectCommandsLayoutCreateInfoNVX::initialize(const safe_VkIndirectCommandsLayoutCreateInfoNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pipelineBindPoint = src->pipelineBindPoint;
     flags = src->flags;
     tokenCount = src->tokenCount;
     pTokens = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pTokens) {
         pTokens = new VkIndirectCommandsLayoutTokenNVX[src->tokenCount];
         memcpy ((void *)pTokens, (void *)src->pTokens, sizeof(VkIndirectCommandsLayoutTokenNVX)*src->tokenCount);
@@ -15933,7 +16753,6 @@
 
 safe_VkCmdProcessCommandsInfoNVX::safe_VkCmdProcessCommandsInfoNVX(const VkCmdProcessCommandsInfoNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectTable(in_struct->objectTable),
     indirectCommandsLayout(in_struct->indirectCommandsLayout),
     indirectCommandsTokenCount(in_struct->indirectCommandsTokenCount),
@@ -15945,6 +16764,7 @@
     sequencesIndexBuffer(in_struct->sequencesIndexBuffer),
     sequencesIndexOffset(in_struct->sequencesIndexOffset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (indirectCommandsTokenCount && in_struct->pIndirectCommandsTokens) {
         pIndirectCommandsTokens = new VkIndirectCommandsTokenNVX[indirectCommandsTokenCount];
         for (uint32_t i=0; i<indirectCommandsTokenCount; ++i) {
@@ -15960,7 +16780,6 @@
 safe_VkCmdProcessCommandsInfoNVX::safe_VkCmdProcessCommandsInfoNVX(const safe_VkCmdProcessCommandsInfoNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectTable = src.objectTable;
     indirectCommandsLayout = src.indirectCommandsLayout;
     indirectCommandsTokenCount = src.indirectCommandsTokenCount;
@@ -15971,6 +16790,7 @@
     sequencesCountOffset = src.sequencesCountOffset;
     sequencesIndexBuffer = src.sequencesIndexBuffer;
     sequencesIndexOffset = src.sequencesIndexOffset;
+    pNext = SafePnextCopy(src.pNext);
     if (indirectCommandsTokenCount && src.pIndirectCommandsTokens) {
         pIndirectCommandsTokens = new VkIndirectCommandsTokenNVX[indirectCommandsTokenCount];
         for (uint32_t i=0; i<indirectCommandsTokenCount; ++i) {
@@ -15985,9 +16805,10 @@
 
     if (pIndirectCommandsTokens)
         delete[] pIndirectCommandsTokens;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectTable = src.objectTable;
     indirectCommandsLayout = src.indirectCommandsLayout;
     indirectCommandsTokenCount = src.indirectCommandsTokenCount;
@@ -15998,6 +16819,7 @@
     sequencesCountOffset = src.sequencesCountOffset;
     sequencesIndexBuffer = src.sequencesIndexBuffer;
     sequencesIndexOffset = src.sequencesIndexOffset;
+    pNext = SafePnextCopy(src.pNext);
     if (indirectCommandsTokenCount && src.pIndirectCommandsTokens) {
         pIndirectCommandsTokens = new VkIndirectCommandsTokenNVX[indirectCommandsTokenCount];
         for (uint32_t i=0; i<indirectCommandsTokenCount; ++i) {
@@ -16012,12 +16834,13 @@
 {
     if (pIndirectCommandsTokens)
         delete[] pIndirectCommandsTokens;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCmdProcessCommandsInfoNVX::initialize(const VkCmdProcessCommandsInfoNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectTable = in_struct->objectTable;
     indirectCommandsLayout = in_struct->indirectCommandsLayout;
     indirectCommandsTokenCount = in_struct->indirectCommandsTokenCount;
@@ -16028,6 +16851,7 @@
     sequencesCountOffset = in_struct->sequencesCountOffset;
     sequencesIndexBuffer = in_struct->sequencesIndexBuffer;
     sequencesIndexOffset = in_struct->sequencesIndexOffset;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (indirectCommandsTokenCount && in_struct->pIndirectCommandsTokens) {
         pIndirectCommandsTokens = new VkIndirectCommandsTokenNVX[indirectCommandsTokenCount];
         for (uint32_t i=0; i<indirectCommandsTokenCount; ++i) {
@@ -16039,7 +16863,6 @@
 void safe_VkCmdProcessCommandsInfoNVX::initialize(const safe_VkCmdProcessCommandsInfoNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectTable = src->objectTable;
     indirectCommandsLayout = src->indirectCommandsLayout;
     indirectCommandsTokenCount = src->indirectCommandsTokenCount;
@@ -16050,6 +16873,7 @@
     sequencesCountOffset = src->sequencesCountOffset;
     sequencesIndexBuffer = src->sequencesIndexBuffer;
     sequencesIndexOffset = src->sequencesIndexOffset;
+    pNext = SafePnextCopy(src->pNext);
     if (indirectCommandsTokenCount && src->pIndirectCommandsTokens) {
         pIndirectCommandsTokens = new VkIndirectCommandsTokenNVX[indirectCommandsTokenCount];
         for (uint32_t i=0; i<indirectCommandsTokenCount; ++i) {
@@ -16060,11 +16884,11 @@
 
 safe_VkCmdReserveSpaceForCommandsInfoNVX::safe_VkCmdReserveSpaceForCommandsInfoNVX(const VkCmdReserveSpaceForCommandsInfoNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectTable(in_struct->objectTable),
     indirectCommandsLayout(in_struct->indirectCommandsLayout),
     maxSequencesCount(in_struct->maxSequencesCount)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCmdReserveSpaceForCommandsInfoNVX::safe_VkCmdReserveSpaceForCommandsInfoNVX()
@@ -16073,51 +16897,54 @@
 safe_VkCmdReserveSpaceForCommandsInfoNVX::safe_VkCmdReserveSpaceForCommandsInfoNVX(const safe_VkCmdReserveSpaceForCommandsInfoNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectTable = src.objectTable;
     indirectCommandsLayout = src.indirectCommandsLayout;
     maxSequencesCount = src.maxSequencesCount;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCmdReserveSpaceForCommandsInfoNVX& safe_VkCmdReserveSpaceForCommandsInfoNVX::operator=(const safe_VkCmdReserveSpaceForCommandsInfoNVX& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectTable = src.objectTable;
     indirectCommandsLayout = src.indirectCommandsLayout;
     maxSequencesCount = src.maxSequencesCount;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCmdReserveSpaceForCommandsInfoNVX::~safe_VkCmdReserveSpaceForCommandsInfoNVX()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCmdReserveSpaceForCommandsInfoNVX::initialize(const VkCmdReserveSpaceForCommandsInfoNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectTable = in_struct->objectTable;
     indirectCommandsLayout = in_struct->indirectCommandsLayout;
     maxSequencesCount = in_struct->maxSequencesCount;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCmdReserveSpaceForCommandsInfoNVX::initialize(const safe_VkCmdReserveSpaceForCommandsInfoNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectTable = src->objectTable;
     indirectCommandsLayout = src->indirectCommandsLayout;
     maxSequencesCount = src->maxSequencesCount;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkObjectTableCreateInfoNVX::safe_VkObjectTableCreateInfoNVX(const VkObjectTableCreateInfoNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectCount(in_struct->objectCount),
     pObjectEntryTypes(nullptr),
     pObjectEntryCounts(nullptr),
@@ -16128,6 +16955,7 @@
     maxSampledImagesPerDescriptor(in_struct->maxSampledImagesPerDescriptor),
     maxPipelineLayouts(in_struct->maxPipelineLayouts)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pObjectEntryTypes) {
         pObjectEntryTypes = new VkObjectEntryTypeNVX[in_struct->objectCount];
         memcpy ((void *)pObjectEntryTypes, (void *)in_struct->pObjectEntryTypes, sizeof(VkObjectEntryTypeNVX)*in_struct->objectCount);
@@ -16151,7 +16979,6 @@
 safe_VkObjectTableCreateInfoNVX::safe_VkObjectTableCreateInfoNVX(const safe_VkObjectTableCreateInfoNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectCount = src.objectCount;
     pObjectEntryTypes = nullptr;
     pObjectEntryCounts = nullptr;
@@ -16161,6 +16988,7 @@
     maxStorageImagesPerDescriptor = src.maxStorageImagesPerDescriptor;
     maxSampledImagesPerDescriptor = src.maxSampledImagesPerDescriptor;
     maxPipelineLayouts = src.maxPipelineLayouts;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pObjectEntryTypes) {
         pObjectEntryTypes = new VkObjectEntryTypeNVX[src.objectCount];
         memcpy ((void *)pObjectEntryTypes, (void *)src.pObjectEntryTypes, sizeof(VkObjectEntryTypeNVX)*src.objectCount);
@@ -16185,9 +17013,10 @@
         delete[] pObjectEntryCounts;
     if (pObjectEntryUsageFlags)
         delete[] pObjectEntryUsageFlags;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectCount = src.objectCount;
     pObjectEntryTypes = nullptr;
     pObjectEntryCounts = nullptr;
@@ -16197,6 +17026,7 @@
     maxStorageImagesPerDescriptor = src.maxStorageImagesPerDescriptor;
     maxSampledImagesPerDescriptor = src.maxSampledImagesPerDescriptor;
     maxPipelineLayouts = src.maxPipelineLayouts;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pObjectEntryTypes) {
         pObjectEntryTypes = new VkObjectEntryTypeNVX[src.objectCount];
         memcpy ((void *)pObjectEntryTypes, (void *)src.pObjectEntryTypes, sizeof(VkObjectEntryTypeNVX)*src.objectCount);
@@ -16221,12 +17051,13 @@
         delete[] pObjectEntryCounts;
     if (pObjectEntryUsageFlags)
         delete[] pObjectEntryUsageFlags;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkObjectTableCreateInfoNVX::initialize(const VkObjectTableCreateInfoNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectCount = in_struct->objectCount;
     pObjectEntryTypes = nullptr;
     pObjectEntryCounts = nullptr;
@@ -16236,6 +17067,7 @@
     maxStorageImagesPerDescriptor = in_struct->maxStorageImagesPerDescriptor;
     maxSampledImagesPerDescriptor = in_struct->maxSampledImagesPerDescriptor;
     maxPipelineLayouts = in_struct->maxPipelineLayouts;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pObjectEntryTypes) {
         pObjectEntryTypes = new VkObjectEntryTypeNVX[in_struct->objectCount];
         memcpy ((void *)pObjectEntryTypes, (void *)in_struct->pObjectEntryTypes, sizeof(VkObjectEntryTypeNVX)*in_struct->objectCount);
@@ -16253,7 +17085,6 @@
 void safe_VkObjectTableCreateInfoNVX::initialize(const safe_VkObjectTableCreateInfoNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectCount = src->objectCount;
     pObjectEntryTypes = nullptr;
     pObjectEntryCounts = nullptr;
@@ -16263,6 +17094,7 @@
     maxStorageImagesPerDescriptor = src->maxStorageImagesPerDescriptor;
     maxSampledImagesPerDescriptor = src->maxSampledImagesPerDescriptor;
     maxPipelineLayouts = src->maxPipelineLayouts;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pObjectEntryTypes) {
         pObjectEntryTypes = new VkObjectEntryTypeNVX[src->objectCount];
         memcpy ((void *)pObjectEntryTypes, (void *)src->pObjectEntryTypes, sizeof(VkObjectEntryTypeNVX)*src->objectCount);
@@ -16279,11 +17111,11 @@
 
 safe_VkPipelineViewportWScalingStateCreateInfoNV::safe_VkPipelineViewportWScalingStateCreateInfoNV(const VkPipelineViewportWScalingStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     viewportWScalingEnable(in_struct->viewportWScalingEnable),
     viewportCount(in_struct->viewportCount),
     pViewportWScalings(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewportWScalings) {
         pViewportWScalings = new VkViewportWScalingNV[in_struct->viewportCount];
         memcpy ((void *)pViewportWScalings, (void *)in_struct->pViewportWScalings, sizeof(VkViewportWScalingNV)*in_struct->viewportCount);
@@ -16297,10 +17129,10 @@
 safe_VkPipelineViewportWScalingStateCreateInfoNV::safe_VkPipelineViewportWScalingStateCreateInfoNV(const safe_VkPipelineViewportWScalingStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     viewportWScalingEnable = src.viewportWScalingEnable;
     viewportCount = src.viewportCount;
     pViewportWScalings = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewportWScalings) {
         pViewportWScalings = new VkViewportWScalingNV[src.viewportCount];
         memcpy ((void *)pViewportWScalings, (void *)src.pViewportWScalings, sizeof(VkViewportWScalingNV)*src.viewportCount);
@@ -16313,12 +17145,14 @@
 
     if (pViewportWScalings)
         delete[] pViewportWScalings;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     viewportWScalingEnable = src.viewportWScalingEnable;
     viewportCount = src.viewportCount;
     pViewportWScalings = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewportWScalings) {
         pViewportWScalings = new VkViewportWScalingNV[src.viewportCount];
         memcpy ((void *)pViewportWScalings, (void *)src.pViewportWScalings, sizeof(VkViewportWScalingNV)*src.viewportCount);
@@ -16331,15 +17165,17 @@
 {
     if (pViewportWScalings)
         delete[] pViewportWScalings;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineViewportWScalingStateCreateInfoNV::initialize(const VkPipelineViewportWScalingStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     viewportWScalingEnable = in_struct->viewportWScalingEnable;
     viewportCount = in_struct->viewportCount;
     pViewportWScalings = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewportWScalings) {
         pViewportWScalings = new VkViewportWScalingNV[in_struct->viewportCount];
         memcpy ((void *)pViewportWScalings, (void *)in_struct->pViewportWScalings, sizeof(VkViewportWScalingNV)*in_struct->viewportCount);
@@ -16349,10 +17185,10 @@
 void safe_VkPipelineViewportWScalingStateCreateInfoNV::initialize(const safe_VkPipelineViewportWScalingStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     viewportWScalingEnable = src->viewportWScalingEnable;
     viewportCount = src->viewportCount;
     pViewportWScalings = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pViewportWScalings) {
         pViewportWScalings = new VkViewportWScalingNV[src->viewportCount];
         memcpy ((void *)pViewportWScalings, (void *)src->pViewportWScalings, sizeof(VkViewportWScalingNV)*src->viewportCount);
@@ -16361,7 +17197,6 @@
 
 safe_VkSurfaceCapabilities2EXT::safe_VkSurfaceCapabilities2EXT(const VkSurfaceCapabilities2EXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     minImageCount(in_struct->minImageCount),
     maxImageCount(in_struct->maxImageCount),
     currentExtent(in_struct->currentExtent),
@@ -16374,6 +17209,7 @@
     supportedUsageFlags(in_struct->supportedUsageFlags),
     supportedSurfaceCounters(in_struct->supportedSurfaceCounters)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceCapabilities2EXT::safe_VkSurfaceCapabilities2EXT()
@@ -16382,7 +17218,6 @@
 safe_VkSurfaceCapabilities2EXT::safe_VkSurfaceCapabilities2EXT(const safe_VkSurfaceCapabilities2EXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     minImageCount = src.minImageCount;
     maxImageCount = src.maxImageCount;
     currentExtent = src.currentExtent;
@@ -16394,15 +17229,17 @@
     supportedCompositeAlpha = src.supportedCompositeAlpha;
     supportedUsageFlags = src.supportedUsageFlags;
     supportedSurfaceCounters = src.supportedSurfaceCounters;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceCapabilities2EXT& safe_VkSurfaceCapabilities2EXT::operator=(const safe_VkSurfaceCapabilities2EXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     minImageCount = src.minImageCount;
     maxImageCount = src.maxImageCount;
     currentExtent = src.currentExtent;
@@ -16414,18 +17251,20 @@
     supportedCompositeAlpha = src.supportedCompositeAlpha;
     supportedUsageFlags = src.supportedUsageFlags;
     supportedSurfaceCounters = src.supportedSurfaceCounters;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceCapabilities2EXT::~safe_VkSurfaceCapabilities2EXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceCapabilities2EXT::initialize(const VkSurfaceCapabilities2EXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     minImageCount = in_struct->minImageCount;
     maxImageCount = in_struct->maxImageCount;
     currentExtent = in_struct->currentExtent;
@@ -16437,12 +17276,12 @@
     supportedCompositeAlpha = in_struct->supportedCompositeAlpha;
     supportedUsageFlags = in_struct->supportedUsageFlags;
     supportedSurfaceCounters = in_struct->supportedSurfaceCounters;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceCapabilities2EXT::initialize(const safe_VkSurfaceCapabilities2EXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     minImageCount = src->minImageCount;
     maxImageCount = src->maxImageCount;
     currentExtent = src->currentExtent;
@@ -16454,13 +17293,14 @@
     supportedCompositeAlpha = src->supportedCompositeAlpha;
     supportedUsageFlags = src->supportedUsageFlags;
     supportedSurfaceCounters = src->supportedSurfaceCounters;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayPowerInfoEXT::safe_VkDisplayPowerInfoEXT(const VkDisplayPowerInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     powerState(in_struct->powerState)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayPowerInfoEXT::safe_VkDisplayPowerInfoEXT()
@@ -16469,45 +17309,49 @@
 safe_VkDisplayPowerInfoEXT::safe_VkDisplayPowerInfoEXT(const safe_VkDisplayPowerInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     powerState = src.powerState;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayPowerInfoEXT& safe_VkDisplayPowerInfoEXT::operator=(const safe_VkDisplayPowerInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     powerState = src.powerState;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayPowerInfoEXT::~safe_VkDisplayPowerInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayPowerInfoEXT::initialize(const VkDisplayPowerInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     powerState = in_struct->powerState;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayPowerInfoEXT::initialize(const safe_VkDisplayPowerInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     powerState = src->powerState;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceEventInfoEXT::safe_VkDeviceEventInfoEXT(const VkDeviceEventInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceEvent(in_struct->deviceEvent)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceEventInfoEXT::safe_VkDeviceEventInfoEXT()
@@ -16516,45 +17360,49 @@
 safe_VkDeviceEventInfoEXT::safe_VkDeviceEventInfoEXT(const safe_VkDeviceEventInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceEvent = src.deviceEvent;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceEventInfoEXT& safe_VkDeviceEventInfoEXT::operator=(const safe_VkDeviceEventInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceEvent = src.deviceEvent;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceEventInfoEXT::~safe_VkDeviceEventInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceEventInfoEXT::initialize(const VkDeviceEventInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceEvent = in_struct->deviceEvent;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceEventInfoEXT::initialize(const safe_VkDeviceEventInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceEvent = src->deviceEvent;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayEventInfoEXT::safe_VkDisplayEventInfoEXT(const VkDisplayEventInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     displayEvent(in_struct->displayEvent)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayEventInfoEXT::safe_VkDisplayEventInfoEXT()
@@ -16563,45 +17411,49 @@
 safe_VkDisplayEventInfoEXT::safe_VkDisplayEventInfoEXT(const safe_VkDisplayEventInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     displayEvent = src.displayEvent;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayEventInfoEXT& safe_VkDisplayEventInfoEXT::operator=(const safe_VkDisplayEventInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     displayEvent = src.displayEvent;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayEventInfoEXT::~safe_VkDisplayEventInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayEventInfoEXT::initialize(const VkDisplayEventInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     displayEvent = in_struct->displayEvent;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayEventInfoEXT::initialize(const safe_VkDisplayEventInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     displayEvent = src->displayEvent;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSwapchainCounterCreateInfoEXT::safe_VkSwapchainCounterCreateInfoEXT(const VkSwapchainCounterCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     surfaceCounters(in_struct->surfaceCounters)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSwapchainCounterCreateInfoEXT::safe_VkSwapchainCounterCreateInfoEXT()
@@ -16610,46 +17462,50 @@
 safe_VkSwapchainCounterCreateInfoEXT::safe_VkSwapchainCounterCreateInfoEXT(const safe_VkSwapchainCounterCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     surfaceCounters = src.surfaceCounters;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSwapchainCounterCreateInfoEXT& safe_VkSwapchainCounterCreateInfoEXT::operator=(const safe_VkSwapchainCounterCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     surfaceCounters = src.surfaceCounters;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSwapchainCounterCreateInfoEXT::~safe_VkSwapchainCounterCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSwapchainCounterCreateInfoEXT::initialize(const VkSwapchainCounterCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     surfaceCounters = in_struct->surfaceCounters;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSwapchainCounterCreateInfoEXT::initialize(const safe_VkSwapchainCounterCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     surfaceCounters = src->surfaceCounters;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPresentTimesInfoGOOGLE::safe_VkPresentTimesInfoGOOGLE(const VkPresentTimesInfoGOOGLE* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     swapchainCount(in_struct->swapchainCount),
     pTimes(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pTimes) {
         pTimes = new VkPresentTimeGOOGLE[in_struct->swapchainCount];
         memcpy ((void *)pTimes, (void *)in_struct->pTimes, sizeof(VkPresentTimeGOOGLE)*in_struct->swapchainCount);
@@ -16663,9 +17519,9 @@
 safe_VkPresentTimesInfoGOOGLE::safe_VkPresentTimesInfoGOOGLE(const safe_VkPresentTimesInfoGOOGLE& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     swapchainCount = src.swapchainCount;
     pTimes = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pTimes) {
         pTimes = new VkPresentTimeGOOGLE[src.swapchainCount];
         memcpy ((void *)pTimes, (void *)src.pTimes, sizeof(VkPresentTimeGOOGLE)*src.swapchainCount);
@@ -16678,11 +17534,13 @@
 
     if (pTimes)
         delete[] pTimes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     swapchainCount = src.swapchainCount;
     pTimes = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pTimes) {
         pTimes = new VkPresentTimeGOOGLE[src.swapchainCount];
         memcpy ((void *)pTimes, (void *)src.pTimes, sizeof(VkPresentTimeGOOGLE)*src.swapchainCount);
@@ -16695,14 +17553,16 @@
 {
     if (pTimes)
         delete[] pTimes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPresentTimesInfoGOOGLE::initialize(const VkPresentTimesInfoGOOGLE* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     swapchainCount = in_struct->swapchainCount;
     pTimes = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pTimes) {
         pTimes = new VkPresentTimeGOOGLE[in_struct->swapchainCount];
         memcpy ((void *)pTimes, (void *)in_struct->pTimes, sizeof(VkPresentTimeGOOGLE)*in_struct->swapchainCount);
@@ -16712,9 +17572,9 @@
 void safe_VkPresentTimesInfoGOOGLE::initialize(const safe_VkPresentTimesInfoGOOGLE* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     swapchainCount = src->swapchainCount;
     pTimes = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pTimes) {
         pTimes = new VkPresentTimeGOOGLE[src->swapchainCount];
         memcpy ((void *)pTimes, (void *)src->pTimes, sizeof(VkPresentTimeGOOGLE)*src->swapchainCount);
@@ -16723,9 +17583,9 @@
 
 safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     perViewPositionAllComponents(in_struct->perViewPositionAllComponents)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX()
@@ -16734,47 +17594,51 @@
 safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(const safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     perViewPositionAllComponents = src.perViewPositionAllComponents;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::operator=(const safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     perViewPositionAllComponents = src.perViewPositionAllComponents;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::~safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::initialize(const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     perViewPositionAllComponents = in_struct->perViewPositionAllComponents;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX::initialize(const safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     perViewPositionAllComponents = src->perViewPositionAllComponents;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineViewportSwizzleStateCreateInfoNV::safe_VkPipelineViewportSwizzleStateCreateInfoNV(const VkPipelineViewportSwizzleStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     viewportCount(in_struct->viewportCount),
     pViewportSwizzles(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewportSwizzles) {
         pViewportSwizzles = new VkViewportSwizzleNV[in_struct->viewportCount];
         memcpy ((void *)pViewportSwizzles, (void *)in_struct->pViewportSwizzles, sizeof(VkViewportSwizzleNV)*in_struct->viewportCount);
@@ -16788,10 +17652,10 @@
 safe_VkPipelineViewportSwizzleStateCreateInfoNV::safe_VkPipelineViewportSwizzleStateCreateInfoNV(const safe_VkPipelineViewportSwizzleStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     viewportCount = src.viewportCount;
     pViewportSwizzles = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewportSwizzles) {
         pViewportSwizzles = new VkViewportSwizzleNV[src.viewportCount];
         memcpy ((void *)pViewportSwizzles, (void *)src.pViewportSwizzles, sizeof(VkViewportSwizzleNV)*src.viewportCount);
@@ -16804,12 +17668,14 @@
 
     if (pViewportSwizzles)
         delete[] pViewportSwizzles;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     viewportCount = src.viewportCount;
     pViewportSwizzles = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pViewportSwizzles) {
         pViewportSwizzles = new VkViewportSwizzleNV[src.viewportCount];
         memcpy ((void *)pViewportSwizzles, (void *)src.pViewportSwizzles, sizeof(VkViewportSwizzleNV)*src.viewportCount);
@@ -16822,15 +17688,17 @@
 {
     if (pViewportSwizzles)
         delete[] pViewportSwizzles;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineViewportSwizzleStateCreateInfoNV::initialize(const VkPipelineViewportSwizzleStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     viewportCount = in_struct->viewportCount;
     pViewportSwizzles = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pViewportSwizzles) {
         pViewportSwizzles = new VkViewportSwizzleNV[in_struct->viewportCount];
         memcpy ((void *)pViewportSwizzles, (void *)in_struct->pViewportSwizzles, sizeof(VkViewportSwizzleNV)*in_struct->viewportCount);
@@ -16840,10 +17708,10 @@
 void safe_VkPipelineViewportSwizzleStateCreateInfoNV::initialize(const safe_VkPipelineViewportSwizzleStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     viewportCount = src->viewportCount;
     pViewportSwizzles = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pViewportSwizzles) {
         pViewportSwizzles = new VkViewportSwizzleNV[src->viewportCount];
         memcpy ((void *)pViewportSwizzles, (void *)src->pViewportSwizzles, sizeof(VkViewportSwizzleNV)*src->viewportCount);
@@ -16852,9 +17720,9 @@
 
 safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT(const VkPhysicalDeviceDiscardRectanglePropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxDiscardRectangles(in_struct->maxDiscardRectangles)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT()
@@ -16863,48 +17731,52 @@
 safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT(const safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxDiscardRectangles = src.maxDiscardRectangles;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT& safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::operator=(const safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxDiscardRectangles = src.maxDiscardRectangles;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::~safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::initialize(const VkPhysicalDeviceDiscardRectanglePropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxDiscardRectangles = in_struct->maxDiscardRectangles;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT::initialize(const safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxDiscardRectangles = src->maxDiscardRectangles;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineDiscardRectangleStateCreateInfoEXT::safe_VkPipelineDiscardRectangleStateCreateInfoEXT(const VkPipelineDiscardRectangleStateCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     discardRectangleMode(in_struct->discardRectangleMode),
     discardRectangleCount(in_struct->discardRectangleCount),
     pDiscardRectangles(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDiscardRectangles) {
         pDiscardRectangles = new VkRect2D[in_struct->discardRectangleCount];
         memcpy ((void *)pDiscardRectangles, (void *)in_struct->pDiscardRectangles, sizeof(VkRect2D)*in_struct->discardRectangleCount);
@@ -16918,11 +17790,11 @@
 safe_VkPipelineDiscardRectangleStateCreateInfoEXT::safe_VkPipelineDiscardRectangleStateCreateInfoEXT(const safe_VkPipelineDiscardRectangleStateCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     discardRectangleMode = src.discardRectangleMode;
     discardRectangleCount = src.discardRectangleCount;
     pDiscardRectangles = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDiscardRectangles) {
         pDiscardRectangles = new VkRect2D[src.discardRectangleCount];
         memcpy ((void *)pDiscardRectangles, (void *)src.pDiscardRectangles, sizeof(VkRect2D)*src.discardRectangleCount);
@@ -16935,13 +17807,15 @@
 
     if (pDiscardRectangles)
         delete[] pDiscardRectangles;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     discardRectangleMode = src.discardRectangleMode;
     discardRectangleCount = src.discardRectangleCount;
     pDiscardRectangles = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDiscardRectangles) {
         pDiscardRectangles = new VkRect2D[src.discardRectangleCount];
         memcpy ((void *)pDiscardRectangles, (void *)src.pDiscardRectangles, sizeof(VkRect2D)*src.discardRectangleCount);
@@ -16954,16 +17828,18 @@
 {
     if (pDiscardRectangles)
         delete[] pDiscardRectangles;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineDiscardRectangleStateCreateInfoEXT::initialize(const VkPipelineDiscardRectangleStateCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     discardRectangleMode = in_struct->discardRectangleMode;
     discardRectangleCount = in_struct->discardRectangleCount;
     pDiscardRectangles = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDiscardRectangles) {
         pDiscardRectangles = new VkRect2D[in_struct->discardRectangleCount];
         memcpy ((void *)pDiscardRectangles, (void *)in_struct->pDiscardRectangles, sizeof(VkRect2D)*in_struct->discardRectangleCount);
@@ -16973,11 +17849,11 @@
 void safe_VkPipelineDiscardRectangleStateCreateInfoEXT::initialize(const safe_VkPipelineDiscardRectangleStateCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     discardRectangleMode = src->discardRectangleMode;
     discardRectangleCount = src->discardRectangleCount;
     pDiscardRectangles = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDiscardRectangles) {
         pDiscardRectangles = new VkRect2D[src->discardRectangleCount];
         memcpy ((void *)pDiscardRectangles, (void *)src->pDiscardRectangles, sizeof(VkRect2D)*src->discardRectangleCount);
@@ -16986,7 +17862,6 @@
 
 safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     primitiveOverestimationSize(in_struct->primitiveOverestimationSize),
     maxExtraPrimitiveOverestimationSize(in_struct->maxExtraPrimitiveOverestimationSize),
     extraPrimitiveOverestimationSizeGranularity(in_struct->extraPrimitiveOverestimationSizeGranularity),
@@ -16997,6 +17872,7 @@
     fullyCoveredFragmentShaderInputVariable(in_struct->fullyCoveredFragmentShaderInputVariable),
     conservativeRasterizationPostDepthCoverage(in_struct->conservativeRasterizationPostDepthCoverage)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT()
@@ -17005,7 +17881,6 @@
 safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(const safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     primitiveOverestimationSize = src.primitiveOverestimationSize;
     maxExtraPrimitiveOverestimationSize = src.maxExtraPrimitiveOverestimationSize;
     extraPrimitiveOverestimationSizeGranularity = src.extraPrimitiveOverestimationSizeGranularity;
@@ -17015,15 +17890,17 @@
     degenerateLinesRasterized = src.degenerateLinesRasterized;
     fullyCoveredFragmentShaderInputVariable = src.fullyCoveredFragmentShaderInputVariable;
     conservativeRasterizationPostDepthCoverage = src.conservativeRasterizationPostDepthCoverage;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT& safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::operator=(const safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     primitiveOverestimationSize = src.primitiveOverestimationSize;
     maxExtraPrimitiveOverestimationSize = src.maxExtraPrimitiveOverestimationSize;
     extraPrimitiveOverestimationSizeGranularity = src.extraPrimitiveOverestimationSizeGranularity;
@@ -17033,18 +17910,20 @@
     degenerateLinesRasterized = src.degenerateLinesRasterized;
     fullyCoveredFragmentShaderInputVariable = src.fullyCoveredFragmentShaderInputVariable;
     conservativeRasterizationPostDepthCoverage = src.conservativeRasterizationPostDepthCoverage;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::~safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::initialize(const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     primitiveOverestimationSize = in_struct->primitiveOverestimationSize;
     maxExtraPrimitiveOverestimationSize = in_struct->maxExtraPrimitiveOverestimationSize;
     extraPrimitiveOverestimationSizeGranularity = in_struct->extraPrimitiveOverestimationSizeGranularity;
@@ -17054,12 +17933,12 @@
     degenerateLinesRasterized = in_struct->degenerateLinesRasterized;
     fullyCoveredFragmentShaderInputVariable = in_struct->fullyCoveredFragmentShaderInputVariable;
     conservativeRasterizationPostDepthCoverage = in_struct->conservativeRasterizationPostDepthCoverage;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT::initialize(const safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     primitiveOverestimationSize = src->primitiveOverestimationSize;
     maxExtraPrimitiveOverestimationSize = src->maxExtraPrimitiveOverestimationSize;
     extraPrimitiveOverestimationSizeGranularity = src->extraPrimitiveOverestimationSizeGranularity;
@@ -17069,15 +17948,16 @@
     degenerateLinesRasterized = src->degenerateLinesRasterized;
     fullyCoveredFragmentShaderInputVariable = src->fullyCoveredFragmentShaderInputVariable;
     conservativeRasterizationPostDepthCoverage = src->conservativeRasterizationPostDepthCoverage;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::safe_VkPipelineRasterizationConservativeStateCreateInfoEXT(const VkPipelineRasterizationConservativeStateCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     conservativeRasterizationMode(in_struct->conservativeRasterizationMode),
     extraPrimitiveOverestimationSize(in_struct->extraPrimitiveOverestimationSize)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::safe_VkPipelineRasterizationConservativeStateCreateInfoEXT()
@@ -17086,53 +17966,57 @@
 safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::safe_VkPipelineRasterizationConservativeStateCreateInfoEXT(const safe_VkPipelineRasterizationConservativeStateCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     conservativeRasterizationMode = src.conservativeRasterizationMode;
     extraPrimitiveOverestimationSize = src.extraPrimitiveOverestimationSize;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineRasterizationConservativeStateCreateInfoEXT& safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::operator=(const safe_VkPipelineRasterizationConservativeStateCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     conservativeRasterizationMode = src.conservativeRasterizationMode;
     extraPrimitiveOverestimationSize = src.extraPrimitiveOverestimationSize;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::~safe_VkPipelineRasterizationConservativeStateCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::initialize(const VkPipelineRasterizationConservativeStateCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     conservativeRasterizationMode = in_struct->conservativeRasterizationMode;
     extraPrimitiveOverestimationSize = in_struct->extraPrimitiveOverestimationSize;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineRasterizationConservativeStateCreateInfoEXT::initialize(const safe_VkPipelineRasterizationConservativeStateCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     conservativeRasterizationMode = src->conservativeRasterizationMode;
     extraPrimitiveOverestimationSize = src->extraPrimitiveOverestimationSize;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT(const VkPhysicalDeviceDepthClipEnableFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     depthClipEnable(in_struct->depthClipEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT()
@@ -17141,46 +18025,50 @@
 safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT(const safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     depthClipEnable = src.depthClipEnable;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT& safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::operator=(const safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     depthClipEnable = src.depthClipEnable;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::~safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::initialize(const VkPhysicalDeviceDepthClipEnableFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     depthClipEnable = in_struct->depthClipEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT::initialize(const safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     depthClipEnable = src->depthClipEnable;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT(const VkPipelineRasterizationDepthClipStateCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     depthClipEnable(in_struct->depthClipEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT()
@@ -17189,47 +18077,50 @@
 safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT(const safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     depthClipEnable = src.depthClipEnable;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT& safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::operator=(const safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     depthClipEnable = src.depthClipEnable;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::~safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::initialize(const VkPipelineRasterizationDepthClipStateCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     depthClipEnable = in_struct->depthClipEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT::initialize(const safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     depthClipEnable = src->depthClipEnable;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkHdrMetadataEXT::safe_VkHdrMetadataEXT(const VkHdrMetadataEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     displayPrimaryRed(in_struct->displayPrimaryRed),
     displayPrimaryGreen(in_struct->displayPrimaryGreen),
     displayPrimaryBlue(in_struct->displayPrimaryBlue),
@@ -17239,6 +18130,7 @@
     maxContentLightLevel(in_struct->maxContentLightLevel),
     maxFrameAverageLightLevel(in_struct->maxFrameAverageLightLevel)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkHdrMetadataEXT::safe_VkHdrMetadataEXT()
@@ -17247,7 +18139,6 @@
 safe_VkHdrMetadataEXT::safe_VkHdrMetadataEXT(const safe_VkHdrMetadataEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     displayPrimaryRed = src.displayPrimaryRed;
     displayPrimaryGreen = src.displayPrimaryGreen;
     displayPrimaryBlue = src.displayPrimaryBlue;
@@ -17256,15 +18147,17 @@
     minLuminance = src.minLuminance;
     maxContentLightLevel = src.maxContentLightLevel;
     maxFrameAverageLightLevel = src.maxFrameAverageLightLevel;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkHdrMetadataEXT& safe_VkHdrMetadataEXT::operator=(const safe_VkHdrMetadataEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     displayPrimaryRed = src.displayPrimaryRed;
     displayPrimaryGreen = src.displayPrimaryGreen;
     displayPrimaryBlue = src.displayPrimaryBlue;
@@ -17273,18 +18166,20 @@
     minLuminance = src.minLuminance;
     maxContentLightLevel = src.maxContentLightLevel;
     maxFrameAverageLightLevel = src.maxFrameAverageLightLevel;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkHdrMetadataEXT::~safe_VkHdrMetadataEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkHdrMetadataEXT::initialize(const VkHdrMetadataEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     displayPrimaryRed = in_struct->displayPrimaryRed;
     displayPrimaryGreen = in_struct->displayPrimaryGreen;
     displayPrimaryBlue = in_struct->displayPrimaryBlue;
@@ -17293,12 +18188,12 @@
     minLuminance = in_struct->minLuminance;
     maxContentLightLevel = in_struct->maxContentLightLevel;
     maxFrameAverageLightLevel = in_struct->maxFrameAverageLightLevel;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkHdrMetadataEXT::initialize(const safe_VkHdrMetadataEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     displayPrimaryRed = src->displayPrimaryRed;
     displayPrimaryGreen = src->displayPrimaryGreen;
     displayPrimaryBlue = src->displayPrimaryBlue;
@@ -17307,16 +18202,17 @@
     minLuminance = src->minLuminance;
     maxContentLightLevel = src->maxContentLightLevel;
     maxFrameAverageLightLevel = src->maxFrameAverageLightLevel;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_IOS_MVK
 
 
 safe_VkIOSSurfaceCreateInfoMVK::safe_VkIOSSurfaceCreateInfoMVK(const VkIOSSurfaceCreateInfoMVK* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     pView(in_struct->pView)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkIOSSurfaceCreateInfoMVK::safe_VkIOSSurfaceCreateInfoMVK()
@@ -17325,42 +18221,46 @@
 safe_VkIOSSurfaceCreateInfoMVK::safe_VkIOSSurfaceCreateInfoMVK(const safe_VkIOSSurfaceCreateInfoMVK& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pView = src.pView;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkIOSSurfaceCreateInfoMVK& safe_VkIOSSurfaceCreateInfoMVK::operator=(const safe_VkIOSSurfaceCreateInfoMVK& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pView = src.pView;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkIOSSurfaceCreateInfoMVK::~safe_VkIOSSurfaceCreateInfoMVK()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkIOSSurfaceCreateInfoMVK::initialize(const VkIOSSurfaceCreateInfoMVK* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     pView = in_struct->pView;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkIOSSurfaceCreateInfoMVK::initialize(const safe_VkIOSSurfaceCreateInfoMVK* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     pView = src->pView;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_IOS_MVK
 
@@ -17369,10 +18269,10 @@
 
 safe_VkMacOSSurfaceCreateInfoMVK::safe_VkMacOSSurfaceCreateInfoMVK(const VkMacOSSurfaceCreateInfoMVK* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     pView(in_struct->pView)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMacOSSurfaceCreateInfoMVK::safe_VkMacOSSurfaceCreateInfoMVK()
@@ -17381,53 +18281,57 @@
 safe_VkMacOSSurfaceCreateInfoMVK::safe_VkMacOSSurfaceCreateInfoMVK(const safe_VkMacOSSurfaceCreateInfoMVK& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pView = src.pView;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMacOSSurfaceCreateInfoMVK& safe_VkMacOSSurfaceCreateInfoMVK::operator=(const safe_VkMacOSSurfaceCreateInfoMVK& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pView = src.pView;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMacOSSurfaceCreateInfoMVK::~safe_VkMacOSSurfaceCreateInfoMVK()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMacOSSurfaceCreateInfoMVK::initialize(const VkMacOSSurfaceCreateInfoMVK* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     pView = in_struct->pView;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMacOSSurfaceCreateInfoMVK::initialize(const safe_VkMacOSSurfaceCreateInfoMVK* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     pView = src->pView;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_MACOS_MVK
 
 
 safe_VkDebugUtilsObjectNameInfoEXT::safe_VkDebugUtilsObjectNameInfoEXT(const VkDebugUtilsObjectNameInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectType(in_struct->objectType),
     objectHandle(in_struct->objectHandle),
     pObjectName(in_struct->pObjectName)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDebugUtilsObjectNameInfoEXT::safe_VkDebugUtilsObjectNameInfoEXT()
@@ -17436,57 +18340,61 @@
 safe_VkDebugUtilsObjectNameInfoEXT::safe_VkDebugUtilsObjectNameInfoEXT(const safe_VkDebugUtilsObjectNameInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     objectHandle = src.objectHandle;
     pObjectName = src.pObjectName;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDebugUtilsObjectNameInfoEXT& safe_VkDebugUtilsObjectNameInfoEXT::operator=(const safe_VkDebugUtilsObjectNameInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     objectHandle = src.objectHandle;
     pObjectName = src.pObjectName;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDebugUtilsObjectNameInfoEXT::~safe_VkDebugUtilsObjectNameInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugUtilsObjectNameInfoEXT::initialize(const VkDebugUtilsObjectNameInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectType = in_struct->objectType;
     objectHandle = in_struct->objectHandle;
     pObjectName = in_struct->pObjectName;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDebugUtilsObjectNameInfoEXT::initialize(const safe_VkDebugUtilsObjectNameInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectType = src->objectType;
     objectHandle = src->objectHandle;
     pObjectName = src->pObjectName;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDebugUtilsObjectTagInfoEXT::safe_VkDebugUtilsObjectTagInfoEXT(const VkDebugUtilsObjectTagInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     objectType(in_struct->objectType),
     objectHandle(in_struct->objectHandle),
     tagName(in_struct->tagName),
     tagSize(in_struct->tagSize),
     pTag(in_struct->pTag)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDebugUtilsObjectTagInfoEXT::safe_VkDebugUtilsObjectTagInfoEXT()
@@ -17495,61 +18403,65 @@
 safe_VkDebugUtilsObjectTagInfoEXT::safe_VkDebugUtilsObjectTagInfoEXT(const safe_VkDebugUtilsObjectTagInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     objectHandle = src.objectHandle;
     tagName = src.tagName;
     tagSize = src.tagSize;
     pTag = src.pTag;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDebugUtilsObjectTagInfoEXT& safe_VkDebugUtilsObjectTagInfoEXT::operator=(const safe_VkDebugUtilsObjectTagInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     objectType = src.objectType;
     objectHandle = src.objectHandle;
     tagName = src.tagName;
     tagSize = src.tagSize;
     pTag = src.pTag;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDebugUtilsObjectTagInfoEXT::~safe_VkDebugUtilsObjectTagInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugUtilsObjectTagInfoEXT::initialize(const VkDebugUtilsObjectTagInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     objectType = in_struct->objectType;
     objectHandle = in_struct->objectHandle;
     tagName = in_struct->tagName;
     tagSize = in_struct->tagSize;
     pTag = in_struct->pTag;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDebugUtilsObjectTagInfoEXT::initialize(const safe_VkDebugUtilsObjectTagInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     objectType = src->objectType;
     objectHandle = src->objectHandle;
     tagName = src->tagName;
     tagSize = src->tagSize;
     pTag = src->pTag;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDebugUtilsLabelEXT::safe_VkDebugUtilsLabelEXT(const VkDebugUtilsLabelEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pLabelName(in_struct->pLabelName)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = in_struct->color[i];
     }
@@ -17561,8 +18473,8 @@
 safe_VkDebugUtilsLabelEXT::safe_VkDebugUtilsLabelEXT(const safe_VkDebugUtilsLabelEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pLabelName = src.pLabelName;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = src.color[i];
     }
@@ -17572,10 +18484,12 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pLabelName = src.pLabelName;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = src.color[i];
     }
@@ -17585,13 +18499,15 @@
 
 safe_VkDebugUtilsLabelEXT::~safe_VkDebugUtilsLabelEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugUtilsLabelEXT::initialize(const VkDebugUtilsLabelEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pLabelName = in_struct->pLabelName;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = in_struct->color[i];
     }
@@ -17600,8 +18516,8 @@
 void safe_VkDebugUtilsLabelEXT::initialize(const safe_VkDebugUtilsLabelEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pLabelName = src->pLabelName;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<4; ++i) {
         color[i] = src->color[i];
     }
@@ -17609,7 +18525,6 @@
 
 safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDataEXT(const VkDebugUtilsMessengerCallbackDataEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     pMessageIdName(in_struct->pMessageIdName),
     messageIdNumber(in_struct->messageIdNumber),
@@ -17621,6 +18536,7 @@
     objectCount(in_struct->objectCount),
     pObjects(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (queueLabelCount && in_struct->pQueueLabels) {
         pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount];
         for (uint32_t i=0; i<queueLabelCount; ++i) {
@@ -17650,7 +18566,6 @@
 safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDataEXT(const safe_VkDebugUtilsMessengerCallbackDataEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pMessageIdName = src.pMessageIdName;
     messageIdNumber = src.messageIdNumber;
@@ -17661,6 +18576,7 @@
     pCmdBufLabels = nullptr;
     objectCount = src.objectCount;
     pObjects = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (queueLabelCount && src.pQueueLabels) {
         pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount];
         for (uint32_t i=0; i<queueLabelCount; ++i) {
@@ -17691,9 +18607,10 @@
         delete[] pCmdBufLabels;
     if (pObjects)
         delete[] pObjects;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pMessageIdName = src.pMessageIdName;
     messageIdNumber = src.messageIdNumber;
@@ -17704,6 +18621,7 @@
     pCmdBufLabels = nullptr;
     objectCount = src.objectCount;
     pObjects = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (queueLabelCount && src.pQueueLabels) {
         pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount];
         for (uint32_t i=0; i<queueLabelCount; ++i) {
@@ -17734,12 +18652,13 @@
         delete[] pCmdBufLabels;
     if (pObjects)
         delete[] pObjects;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugUtilsMessengerCallbackDataEXT::initialize(const VkDebugUtilsMessengerCallbackDataEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     pMessageIdName = in_struct->pMessageIdName;
     messageIdNumber = in_struct->messageIdNumber;
@@ -17750,6 +18669,7 @@
     pCmdBufLabels = nullptr;
     objectCount = in_struct->objectCount;
     pObjects = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (queueLabelCount && in_struct->pQueueLabels) {
         pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount];
         for (uint32_t i=0; i<queueLabelCount; ++i) {
@@ -17773,7 +18693,6 @@
 void safe_VkDebugUtilsMessengerCallbackDataEXT::initialize(const safe_VkDebugUtilsMessengerCallbackDataEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     pMessageIdName = src->pMessageIdName;
     messageIdNumber = src->messageIdNumber;
@@ -17784,6 +18703,7 @@
     pCmdBufLabels = nullptr;
     objectCount = src->objectCount;
     pObjects = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (queueLabelCount && src->pQueueLabels) {
         pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount];
         for (uint32_t i=0; i<queueLabelCount; ++i) {
@@ -17806,13 +18726,13 @@
 
 safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT(const VkDebugUtilsMessengerCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     messageSeverity(in_struct->messageSeverity),
     messageType(in_struct->messageType),
     pfnUserCallback(in_struct->pfnUserCallback),
     pUserData(in_struct->pUserData)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT()
@@ -17821,63 +18741,67 @@
 safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT(const safe_VkDebugUtilsMessengerCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     messageSeverity = src.messageSeverity;
     messageType = src.messageType;
     pfnUserCallback = src.pfnUserCallback;
     pUserData = src.pUserData;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDebugUtilsMessengerCreateInfoEXT& safe_VkDebugUtilsMessengerCreateInfoEXT::operator=(const safe_VkDebugUtilsMessengerCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     messageSeverity = src.messageSeverity;
     messageType = src.messageType;
     pfnUserCallback = src.pfnUserCallback;
     pUserData = src.pUserData;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDebugUtilsMessengerCreateInfoEXT::~safe_VkDebugUtilsMessengerCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDebugUtilsMessengerCreateInfoEXT::initialize(const VkDebugUtilsMessengerCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     messageSeverity = in_struct->messageSeverity;
     messageType = in_struct->messageType;
     pfnUserCallback = in_struct->pfnUserCallback;
     pUserData = in_struct->pUserData;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDebugUtilsMessengerCreateInfoEXT::initialize(const safe_VkDebugUtilsMessengerCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     messageSeverity = src->messageSeverity;
     messageType = src->messageType;
     pfnUserCallback = src->pfnUserCallback;
     pUserData = src->pUserData;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
 
 
 safe_VkAndroidHardwareBufferUsageANDROID::safe_VkAndroidHardwareBufferUsageANDROID(const VkAndroidHardwareBufferUsageANDROID* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     androidHardwareBufferUsage(in_struct->androidHardwareBufferUsage)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAndroidHardwareBufferUsageANDROID::safe_VkAndroidHardwareBufferUsageANDROID()
@@ -17886,38 +18810,42 @@
 safe_VkAndroidHardwareBufferUsageANDROID::safe_VkAndroidHardwareBufferUsageANDROID(const safe_VkAndroidHardwareBufferUsageANDROID& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     androidHardwareBufferUsage = src.androidHardwareBufferUsage;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAndroidHardwareBufferUsageANDROID& safe_VkAndroidHardwareBufferUsageANDROID::operator=(const safe_VkAndroidHardwareBufferUsageANDROID& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     androidHardwareBufferUsage = src.androidHardwareBufferUsage;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAndroidHardwareBufferUsageANDROID::~safe_VkAndroidHardwareBufferUsageANDROID()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAndroidHardwareBufferUsageANDROID::initialize(const VkAndroidHardwareBufferUsageANDROID* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     androidHardwareBufferUsage = in_struct->androidHardwareBufferUsage;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAndroidHardwareBufferUsageANDROID::initialize(const safe_VkAndroidHardwareBufferUsageANDROID* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     androidHardwareBufferUsage = src->androidHardwareBufferUsage;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
@@ -17926,10 +18854,10 @@
 
 safe_VkAndroidHardwareBufferPropertiesANDROID::safe_VkAndroidHardwareBufferPropertiesANDROID(const VkAndroidHardwareBufferPropertiesANDROID* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     allocationSize(in_struct->allocationSize),
     memoryTypeBits(in_struct->memoryTypeBits)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAndroidHardwareBufferPropertiesANDROID::safe_VkAndroidHardwareBufferPropertiesANDROID()
@@ -17938,42 +18866,46 @@
 safe_VkAndroidHardwareBufferPropertiesANDROID::safe_VkAndroidHardwareBufferPropertiesANDROID(const safe_VkAndroidHardwareBufferPropertiesANDROID& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     allocationSize = src.allocationSize;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAndroidHardwareBufferPropertiesANDROID& safe_VkAndroidHardwareBufferPropertiesANDROID::operator=(const safe_VkAndroidHardwareBufferPropertiesANDROID& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     allocationSize = src.allocationSize;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAndroidHardwareBufferPropertiesANDROID::~safe_VkAndroidHardwareBufferPropertiesANDROID()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAndroidHardwareBufferPropertiesANDROID::initialize(const VkAndroidHardwareBufferPropertiesANDROID* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     allocationSize = in_struct->allocationSize;
     memoryTypeBits = in_struct->memoryTypeBits;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAndroidHardwareBufferPropertiesANDROID::initialize(const safe_VkAndroidHardwareBufferPropertiesANDROID* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     allocationSize = src->allocationSize;
     memoryTypeBits = src->memoryTypeBits;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
@@ -17982,7 +18914,6 @@
 
 safe_VkAndroidHardwareBufferFormatPropertiesANDROID::safe_VkAndroidHardwareBufferFormatPropertiesANDROID(const VkAndroidHardwareBufferFormatPropertiesANDROID* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     format(in_struct->format),
     externalFormat(in_struct->externalFormat),
     formatFeatures(in_struct->formatFeatures),
@@ -17992,6 +18923,7 @@
     suggestedXChromaOffset(in_struct->suggestedXChromaOffset),
     suggestedYChromaOffset(in_struct->suggestedYChromaOffset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAndroidHardwareBufferFormatPropertiesANDROID::safe_VkAndroidHardwareBufferFormatPropertiesANDROID()
@@ -18000,7 +18932,6 @@
 safe_VkAndroidHardwareBufferFormatPropertiesANDROID::safe_VkAndroidHardwareBufferFormatPropertiesANDROID(const safe_VkAndroidHardwareBufferFormatPropertiesANDROID& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     externalFormat = src.externalFormat;
     formatFeatures = src.formatFeatures;
@@ -18009,15 +18940,17 @@
     suggestedYcbcrRange = src.suggestedYcbcrRange;
     suggestedXChromaOffset = src.suggestedXChromaOffset;
     suggestedYChromaOffset = src.suggestedYChromaOffset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAndroidHardwareBufferFormatPropertiesANDROID& safe_VkAndroidHardwareBufferFormatPropertiesANDROID::operator=(const safe_VkAndroidHardwareBufferFormatPropertiesANDROID& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     format = src.format;
     externalFormat = src.externalFormat;
     formatFeatures = src.formatFeatures;
@@ -18026,18 +18959,20 @@
     suggestedYcbcrRange = src.suggestedYcbcrRange;
     suggestedXChromaOffset = src.suggestedXChromaOffset;
     suggestedYChromaOffset = src.suggestedYChromaOffset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAndroidHardwareBufferFormatPropertiesANDROID::~safe_VkAndroidHardwareBufferFormatPropertiesANDROID()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAndroidHardwareBufferFormatPropertiesANDROID::initialize(const VkAndroidHardwareBufferFormatPropertiesANDROID* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     format = in_struct->format;
     externalFormat = in_struct->externalFormat;
     formatFeatures = in_struct->formatFeatures;
@@ -18046,12 +18981,12 @@
     suggestedYcbcrRange = in_struct->suggestedYcbcrRange;
     suggestedXChromaOffset = in_struct->suggestedXChromaOffset;
     suggestedYChromaOffset = in_struct->suggestedYChromaOffset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAndroidHardwareBufferFormatPropertiesANDROID::initialize(const safe_VkAndroidHardwareBufferFormatPropertiesANDROID* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     format = src->format;
     externalFormat = src->externalFormat;
     formatFeatures = src->formatFeatures;
@@ -18060,6 +18995,7 @@
     suggestedYcbcrRange = src->suggestedYcbcrRange;
     suggestedXChromaOffset = src->suggestedXChromaOffset;
     suggestedYChromaOffset = src->suggestedYChromaOffset;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
@@ -18068,9 +19004,9 @@
 
 safe_VkImportAndroidHardwareBufferInfoANDROID::safe_VkImportAndroidHardwareBufferInfoANDROID(const VkImportAndroidHardwareBufferInfoANDROID* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     buffer(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     buffer = in_struct->buffer;
 }
 
@@ -18081,7 +19017,7 @@
 safe_VkImportAndroidHardwareBufferInfoANDROID::safe_VkImportAndroidHardwareBufferInfoANDROID(const safe_VkImportAndroidHardwareBufferInfoANDROID& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
+    pNext = SafePnextCopy(src.pNext);
     buffer = src.buffer;
 }
 
@@ -18089,9 +19025,11 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
+    pNext = SafePnextCopy(src.pNext);
     buffer = src.buffer;
 
     return *this;
@@ -18099,19 +19037,21 @@
 
 safe_VkImportAndroidHardwareBufferInfoANDROID::~safe_VkImportAndroidHardwareBufferInfoANDROID()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportAndroidHardwareBufferInfoANDROID::initialize(const VkImportAndroidHardwareBufferInfoANDROID* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
+    pNext = SafePnextCopy(in_struct->pNext);
     buffer = in_struct->buffer;
 }
 
 void safe_VkImportAndroidHardwareBufferInfoANDROID::initialize(const safe_VkImportAndroidHardwareBufferInfoANDROID* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
+    pNext = SafePnextCopy(src->pNext);
     buffer = src->buffer;
 }
 #endif // VK_USE_PLATFORM_ANDROID_KHR
@@ -18121,9 +19061,9 @@
 
 safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::safe_VkMemoryGetAndroidHardwareBufferInfoANDROID(const VkMemoryGetAndroidHardwareBufferInfoANDROID* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memory(in_struct->memory)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::safe_VkMemoryGetAndroidHardwareBufferInfoANDROID()
@@ -18132,38 +19072,42 @@
 safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::safe_VkMemoryGetAndroidHardwareBufferInfoANDROID(const safe_VkMemoryGetAndroidHardwareBufferInfoANDROID& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryGetAndroidHardwareBufferInfoANDROID& safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::operator=(const safe_VkMemoryGetAndroidHardwareBufferInfoANDROID& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memory = src.memory;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::~safe_VkMemoryGetAndroidHardwareBufferInfoANDROID()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::initialize(const VkMemoryGetAndroidHardwareBufferInfoANDROID* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memory = in_struct->memory;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryGetAndroidHardwareBufferInfoANDROID::initialize(const safe_VkMemoryGetAndroidHardwareBufferInfoANDROID* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memory = src->memory;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
@@ -18172,9 +19116,9 @@
 
 safe_VkExternalFormatANDROID::safe_VkExternalFormatANDROID(const VkExternalFormatANDROID* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     externalFormat(in_struct->externalFormat)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkExternalFormatANDROID::safe_VkExternalFormatANDROID()
@@ -18183,47 +19127,51 @@
 safe_VkExternalFormatANDROID::safe_VkExternalFormatANDROID(const safe_VkExternalFormatANDROID& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     externalFormat = src.externalFormat;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkExternalFormatANDROID& safe_VkExternalFormatANDROID::operator=(const safe_VkExternalFormatANDROID& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     externalFormat = src.externalFormat;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkExternalFormatANDROID::~safe_VkExternalFormatANDROID()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkExternalFormatANDROID::initialize(const VkExternalFormatANDROID* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     externalFormat = in_struct->externalFormat;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkExternalFormatANDROID::initialize(const safe_VkExternalFormatANDROID* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     externalFormat = src->externalFormat;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 
 safe_VkSamplerReductionModeCreateInfoEXT::safe_VkSamplerReductionModeCreateInfoEXT(const VkSamplerReductionModeCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     reductionMode(in_struct->reductionMode)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSamplerReductionModeCreateInfoEXT::safe_VkSamplerReductionModeCreateInfoEXT()
@@ -18232,46 +19180,50 @@
 safe_VkSamplerReductionModeCreateInfoEXT::safe_VkSamplerReductionModeCreateInfoEXT(const safe_VkSamplerReductionModeCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     reductionMode = src.reductionMode;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSamplerReductionModeCreateInfoEXT& safe_VkSamplerReductionModeCreateInfoEXT::operator=(const safe_VkSamplerReductionModeCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     reductionMode = src.reductionMode;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSamplerReductionModeCreateInfoEXT::~safe_VkSamplerReductionModeCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSamplerReductionModeCreateInfoEXT::initialize(const VkSamplerReductionModeCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     reductionMode = in_struct->reductionMode;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSamplerReductionModeCreateInfoEXT::initialize(const safe_VkSamplerReductionModeCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     reductionMode = src->reductionMode;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     filterMinmaxSingleComponentFormats(in_struct->filterMinmaxSingleComponentFormats),
     filterMinmaxImageComponentMapping(in_struct->filterMinmaxImageComponentMapping)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT()
@@ -18280,50 +19232,54 @@
 safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(const safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     filterMinmaxSingleComponentFormats = src.filterMinmaxSingleComponentFormats;
     filterMinmaxImageComponentMapping = src.filterMinmaxImageComponentMapping;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::operator=(const safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     filterMinmaxSingleComponentFormats = src.filterMinmaxSingleComponentFormats;
     filterMinmaxImageComponentMapping = src.filterMinmaxImageComponentMapping;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::~safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::initialize(const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     filterMinmaxSingleComponentFormats = in_struct->filterMinmaxSingleComponentFormats;
     filterMinmaxImageComponentMapping = in_struct->filterMinmaxImageComponentMapping;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT::initialize(const safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     filterMinmaxSingleComponentFormats = src->filterMinmaxSingleComponentFormats;
     filterMinmaxImageComponentMapping = src->filterMinmaxImageComponentMapping;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     inlineUniformBlock(in_struct->inlineUniformBlock),
     descriptorBindingInlineUniformBlockUpdateAfterBind(in_struct->descriptorBindingInlineUniformBlockUpdateAfterBind)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT()
@@ -18332,53 +19288,57 @@
 safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT(const safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     inlineUniformBlock = src.inlineUniformBlock;
     descriptorBindingInlineUniformBlockUpdateAfterBind = src.descriptorBindingInlineUniformBlockUpdateAfterBind;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT& safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::operator=(const safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     inlineUniformBlock = src.inlineUniformBlock;
     descriptorBindingInlineUniformBlockUpdateAfterBind = src.descriptorBindingInlineUniformBlockUpdateAfterBind;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::~safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::initialize(const VkPhysicalDeviceInlineUniformBlockFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     inlineUniformBlock = in_struct->inlineUniformBlock;
     descriptorBindingInlineUniformBlockUpdateAfterBind = in_struct->descriptorBindingInlineUniformBlockUpdateAfterBind;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT::initialize(const safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     inlineUniformBlock = src->inlineUniformBlock;
     descriptorBindingInlineUniformBlockUpdateAfterBind = src->descriptorBindingInlineUniformBlockUpdateAfterBind;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxInlineUniformBlockSize(in_struct->maxInlineUniformBlockSize),
     maxPerStageDescriptorInlineUniformBlocks(in_struct->maxPerStageDescriptorInlineUniformBlocks),
     maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks(in_struct->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks),
     maxDescriptorSetInlineUniformBlocks(in_struct->maxDescriptorSetInlineUniformBlocks),
     maxDescriptorSetUpdateAfterBindInlineUniformBlocks(in_struct->maxDescriptorSetUpdateAfterBindInlineUniformBlocks)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT()
@@ -18387,62 +19347,66 @@
 safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT(const safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxInlineUniformBlockSize = src.maxInlineUniformBlockSize;
     maxPerStageDescriptorInlineUniformBlocks = src.maxPerStageDescriptorInlineUniformBlocks;
     maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = src.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
     maxDescriptorSetInlineUniformBlocks = src.maxDescriptorSetInlineUniformBlocks;
     maxDescriptorSetUpdateAfterBindInlineUniformBlocks = src.maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT& safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::operator=(const safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxInlineUniformBlockSize = src.maxInlineUniformBlockSize;
     maxPerStageDescriptorInlineUniformBlocks = src.maxPerStageDescriptorInlineUniformBlocks;
     maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = src.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
     maxDescriptorSetInlineUniformBlocks = src.maxDescriptorSetInlineUniformBlocks;
     maxDescriptorSetUpdateAfterBindInlineUniformBlocks = src.maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::~safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::initialize(const VkPhysicalDeviceInlineUniformBlockPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxInlineUniformBlockSize = in_struct->maxInlineUniformBlockSize;
     maxPerStageDescriptorInlineUniformBlocks = in_struct->maxPerStageDescriptorInlineUniformBlocks;
     maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = in_struct->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
     maxDescriptorSetInlineUniformBlocks = in_struct->maxDescriptorSetInlineUniformBlocks;
     maxDescriptorSetUpdateAfterBindInlineUniformBlocks = in_struct->maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT::initialize(const safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxInlineUniformBlockSize = src->maxInlineUniformBlockSize;
     maxPerStageDescriptorInlineUniformBlocks = src->maxPerStageDescriptorInlineUniformBlocks;
     maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = src->maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
     maxDescriptorSetInlineUniformBlocks = src->maxDescriptorSetInlineUniformBlocks;
     maxDescriptorSetUpdateAfterBindInlineUniformBlocks = src->maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkWriteDescriptorSetInlineUniformBlockEXT::safe_VkWriteDescriptorSetInlineUniformBlockEXT(const VkWriteDescriptorSetInlineUniformBlockEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     dataSize(in_struct->dataSize),
     pData(in_struct->pData)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkWriteDescriptorSetInlineUniformBlockEXT::safe_VkWriteDescriptorSetInlineUniformBlockEXT()
@@ -18451,49 +19415,53 @@
 safe_VkWriteDescriptorSetInlineUniformBlockEXT::safe_VkWriteDescriptorSetInlineUniformBlockEXT(const safe_VkWriteDescriptorSetInlineUniformBlockEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     dataSize = src.dataSize;
     pData = src.pData;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkWriteDescriptorSetInlineUniformBlockEXT& safe_VkWriteDescriptorSetInlineUniformBlockEXT::operator=(const safe_VkWriteDescriptorSetInlineUniformBlockEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     dataSize = src.dataSize;
     pData = src.pData;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkWriteDescriptorSetInlineUniformBlockEXT::~safe_VkWriteDescriptorSetInlineUniformBlockEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkWriteDescriptorSetInlineUniformBlockEXT::initialize(const VkWriteDescriptorSetInlineUniformBlockEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     dataSize = in_struct->dataSize;
     pData = in_struct->pData;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkWriteDescriptorSetInlineUniformBlockEXT::initialize(const safe_VkWriteDescriptorSetInlineUniformBlockEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     dataSize = src->dataSize;
     pData = src->pData;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxInlineUniformBlockBindings(in_struct->maxInlineUniformBlockBindings)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT()
@@ -18502,48 +19470,52 @@
 safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT(const safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxInlineUniformBlockBindings = src.maxInlineUniformBlockBindings;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT& safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::operator=(const safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxInlineUniformBlockBindings = src.maxInlineUniformBlockBindings;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::~safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::initialize(const VkDescriptorPoolInlineUniformBlockCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxInlineUniformBlockBindings = in_struct->maxInlineUniformBlockBindings;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT::initialize(const safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxInlineUniformBlockBindings = src->maxInlineUniformBlockBindings;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSampleLocationsInfoEXT::safe_VkSampleLocationsInfoEXT(const VkSampleLocationsInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     sampleLocationsPerPixel(in_struct->sampleLocationsPerPixel),
     sampleLocationGridSize(in_struct->sampleLocationGridSize),
     sampleLocationsCount(in_struct->sampleLocationsCount),
     pSampleLocations(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pSampleLocations) {
         pSampleLocations = new VkSampleLocationEXT[in_struct->sampleLocationsCount];
         memcpy ((void *)pSampleLocations, (void *)in_struct->pSampleLocations, sizeof(VkSampleLocationEXT)*in_struct->sampleLocationsCount);
@@ -18557,11 +19529,11 @@
 safe_VkSampleLocationsInfoEXT::safe_VkSampleLocationsInfoEXT(const safe_VkSampleLocationsInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     sampleLocationsPerPixel = src.sampleLocationsPerPixel;
     sampleLocationGridSize = src.sampleLocationGridSize;
     sampleLocationsCount = src.sampleLocationsCount;
     pSampleLocations = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pSampleLocations) {
         pSampleLocations = new VkSampleLocationEXT[src.sampleLocationsCount];
         memcpy ((void *)pSampleLocations, (void *)src.pSampleLocations, sizeof(VkSampleLocationEXT)*src.sampleLocationsCount);
@@ -18574,13 +19546,15 @@
 
     if (pSampleLocations)
         delete[] pSampleLocations;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     sampleLocationsPerPixel = src.sampleLocationsPerPixel;
     sampleLocationGridSize = src.sampleLocationGridSize;
     sampleLocationsCount = src.sampleLocationsCount;
     pSampleLocations = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pSampleLocations) {
         pSampleLocations = new VkSampleLocationEXT[src.sampleLocationsCount];
         memcpy ((void *)pSampleLocations, (void *)src.pSampleLocations, sizeof(VkSampleLocationEXT)*src.sampleLocationsCount);
@@ -18593,16 +19567,18 @@
 {
     if (pSampleLocations)
         delete[] pSampleLocations;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSampleLocationsInfoEXT::initialize(const VkSampleLocationsInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     sampleLocationsPerPixel = in_struct->sampleLocationsPerPixel;
     sampleLocationGridSize = in_struct->sampleLocationGridSize;
     sampleLocationsCount = in_struct->sampleLocationsCount;
     pSampleLocations = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pSampleLocations) {
         pSampleLocations = new VkSampleLocationEXT[in_struct->sampleLocationsCount];
         memcpy ((void *)pSampleLocations, (void *)in_struct->pSampleLocations, sizeof(VkSampleLocationEXT)*in_struct->sampleLocationsCount);
@@ -18612,11 +19588,11 @@
 void safe_VkSampleLocationsInfoEXT::initialize(const safe_VkSampleLocationsInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     sampleLocationsPerPixel = src->sampleLocationsPerPixel;
     sampleLocationGridSize = src->sampleLocationGridSize;
     sampleLocationsCount = src->sampleLocationsCount;
     pSampleLocations = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pSampleLocations) {
         pSampleLocations = new VkSampleLocationEXT[src->sampleLocationsCount];
         memcpy ((void *)pSampleLocations, (void *)src->pSampleLocations, sizeof(VkSampleLocationEXT)*src->sampleLocationsCount);
@@ -18625,12 +19601,12 @@
 
 safe_VkRenderPassSampleLocationsBeginInfoEXT::safe_VkRenderPassSampleLocationsBeginInfoEXT(const VkRenderPassSampleLocationsBeginInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     attachmentInitialSampleLocationsCount(in_struct->attachmentInitialSampleLocationsCount),
     pAttachmentInitialSampleLocations(nullptr),
     postSubpassSampleLocationsCount(in_struct->postSubpassSampleLocationsCount),
     pPostSubpassSampleLocations(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttachmentInitialSampleLocations) {
         pAttachmentInitialSampleLocations = new VkAttachmentSampleLocationsEXT[in_struct->attachmentInitialSampleLocationsCount];
         memcpy ((void *)pAttachmentInitialSampleLocations, (void *)in_struct->pAttachmentInitialSampleLocations, sizeof(VkAttachmentSampleLocationsEXT)*in_struct->attachmentInitialSampleLocationsCount);
@@ -18649,11 +19625,11 @@
 safe_VkRenderPassSampleLocationsBeginInfoEXT::safe_VkRenderPassSampleLocationsBeginInfoEXT(const safe_VkRenderPassSampleLocationsBeginInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     attachmentInitialSampleLocationsCount = src.attachmentInitialSampleLocationsCount;
     pAttachmentInitialSampleLocations = nullptr;
     postSubpassSampleLocationsCount = src.postSubpassSampleLocationsCount;
     pPostSubpassSampleLocations = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttachmentInitialSampleLocations) {
         pAttachmentInitialSampleLocations = new VkAttachmentSampleLocationsEXT[src.attachmentInitialSampleLocationsCount];
         memcpy ((void *)pAttachmentInitialSampleLocations, (void *)src.pAttachmentInitialSampleLocations, sizeof(VkAttachmentSampleLocationsEXT)*src.attachmentInitialSampleLocationsCount);
@@ -18672,13 +19648,15 @@
         delete[] pAttachmentInitialSampleLocations;
     if (pPostSubpassSampleLocations)
         delete[] pPostSubpassSampleLocations;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     attachmentInitialSampleLocationsCount = src.attachmentInitialSampleLocationsCount;
     pAttachmentInitialSampleLocations = nullptr;
     postSubpassSampleLocationsCount = src.postSubpassSampleLocationsCount;
     pPostSubpassSampleLocations = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pAttachmentInitialSampleLocations) {
         pAttachmentInitialSampleLocations = new VkAttachmentSampleLocationsEXT[src.attachmentInitialSampleLocationsCount];
         memcpy ((void *)pAttachmentInitialSampleLocations, (void *)src.pAttachmentInitialSampleLocations, sizeof(VkAttachmentSampleLocationsEXT)*src.attachmentInitialSampleLocationsCount);
@@ -18697,16 +19675,18 @@
         delete[] pAttachmentInitialSampleLocations;
     if (pPostSubpassSampleLocations)
         delete[] pPostSubpassSampleLocations;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassSampleLocationsBeginInfoEXT::initialize(const VkRenderPassSampleLocationsBeginInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     attachmentInitialSampleLocationsCount = in_struct->attachmentInitialSampleLocationsCount;
     pAttachmentInitialSampleLocations = nullptr;
     postSubpassSampleLocationsCount = in_struct->postSubpassSampleLocationsCount;
     pPostSubpassSampleLocations = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pAttachmentInitialSampleLocations) {
         pAttachmentInitialSampleLocations = new VkAttachmentSampleLocationsEXT[in_struct->attachmentInitialSampleLocationsCount];
         memcpy ((void *)pAttachmentInitialSampleLocations, (void *)in_struct->pAttachmentInitialSampleLocations, sizeof(VkAttachmentSampleLocationsEXT)*in_struct->attachmentInitialSampleLocationsCount);
@@ -18720,11 +19700,11 @@
 void safe_VkRenderPassSampleLocationsBeginInfoEXT::initialize(const safe_VkRenderPassSampleLocationsBeginInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     attachmentInitialSampleLocationsCount = src->attachmentInitialSampleLocationsCount;
     pAttachmentInitialSampleLocations = nullptr;
     postSubpassSampleLocationsCount = src->postSubpassSampleLocationsCount;
     pPostSubpassSampleLocations = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pAttachmentInitialSampleLocations) {
         pAttachmentInitialSampleLocations = new VkAttachmentSampleLocationsEXT[src->attachmentInitialSampleLocationsCount];
         memcpy ((void *)pAttachmentInitialSampleLocations, (void *)src->pAttachmentInitialSampleLocations, sizeof(VkAttachmentSampleLocationsEXT)*src->attachmentInitialSampleLocationsCount);
@@ -18737,10 +19717,10 @@
 
 safe_VkPipelineSampleLocationsStateCreateInfoEXT::safe_VkPipelineSampleLocationsStateCreateInfoEXT(const VkPipelineSampleLocationsStateCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     sampleLocationsEnable(in_struct->sampleLocationsEnable),
     sampleLocationsInfo(&in_struct->sampleLocationsInfo)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineSampleLocationsStateCreateInfoEXT::safe_VkPipelineSampleLocationsStateCreateInfoEXT()
@@ -18749,52 +19729,56 @@
 safe_VkPipelineSampleLocationsStateCreateInfoEXT::safe_VkPipelineSampleLocationsStateCreateInfoEXT(const safe_VkPipelineSampleLocationsStateCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     sampleLocationsEnable = src.sampleLocationsEnable;
     sampleLocationsInfo.initialize(&src.sampleLocationsInfo);
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineSampleLocationsStateCreateInfoEXT& safe_VkPipelineSampleLocationsStateCreateInfoEXT::operator=(const safe_VkPipelineSampleLocationsStateCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     sampleLocationsEnable = src.sampleLocationsEnable;
     sampleLocationsInfo.initialize(&src.sampleLocationsInfo);
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineSampleLocationsStateCreateInfoEXT::~safe_VkPipelineSampleLocationsStateCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineSampleLocationsStateCreateInfoEXT::initialize(const VkPipelineSampleLocationsStateCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     sampleLocationsEnable = in_struct->sampleLocationsEnable;
     sampleLocationsInfo.initialize(&in_struct->sampleLocationsInfo);
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineSampleLocationsStateCreateInfoEXT::initialize(const safe_VkPipelineSampleLocationsStateCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     sampleLocationsEnable = src->sampleLocationsEnable;
     sampleLocationsInfo.initialize(&src->sampleLocationsInfo);
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceSampleLocationsPropertiesEXT::safe_VkPhysicalDeviceSampleLocationsPropertiesEXT(const VkPhysicalDeviceSampleLocationsPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     sampleLocationSampleCounts(in_struct->sampleLocationSampleCounts),
     maxSampleLocationGridSize(in_struct->maxSampleLocationGridSize),
     sampleLocationSubPixelBits(in_struct->sampleLocationSubPixelBits),
     variableSampleLocations(in_struct->variableSampleLocations)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<2; ++i) {
         sampleLocationCoordinateRange[i] = in_struct->sampleLocationCoordinateRange[i];
     }
@@ -18806,11 +19790,11 @@
 safe_VkPhysicalDeviceSampleLocationsPropertiesEXT::safe_VkPhysicalDeviceSampleLocationsPropertiesEXT(const safe_VkPhysicalDeviceSampleLocationsPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     sampleLocationSampleCounts = src.sampleLocationSampleCounts;
     maxSampleLocationGridSize = src.maxSampleLocationGridSize;
     sampleLocationSubPixelBits = src.sampleLocationSubPixelBits;
     variableSampleLocations = src.variableSampleLocations;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<2; ++i) {
         sampleLocationCoordinateRange[i] = src.sampleLocationCoordinateRange[i];
     }
@@ -18820,13 +19804,15 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     sampleLocationSampleCounts = src.sampleLocationSampleCounts;
     maxSampleLocationGridSize = src.maxSampleLocationGridSize;
     sampleLocationSubPixelBits = src.sampleLocationSubPixelBits;
     variableSampleLocations = src.variableSampleLocations;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<2; ++i) {
         sampleLocationCoordinateRange[i] = src.sampleLocationCoordinateRange[i];
     }
@@ -18836,16 +19822,18 @@
 
 safe_VkPhysicalDeviceSampleLocationsPropertiesEXT::~safe_VkPhysicalDeviceSampleLocationsPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceSampleLocationsPropertiesEXT::initialize(const VkPhysicalDeviceSampleLocationsPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     sampleLocationSampleCounts = in_struct->sampleLocationSampleCounts;
     maxSampleLocationGridSize = in_struct->maxSampleLocationGridSize;
     sampleLocationSubPixelBits = in_struct->sampleLocationSubPixelBits;
     variableSampleLocations = in_struct->variableSampleLocations;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<2; ++i) {
         sampleLocationCoordinateRange[i] = in_struct->sampleLocationCoordinateRange[i];
     }
@@ -18854,11 +19842,11 @@
 void safe_VkPhysicalDeviceSampleLocationsPropertiesEXT::initialize(const safe_VkPhysicalDeviceSampleLocationsPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     sampleLocationSampleCounts = src->sampleLocationSampleCounts;
     maxSampleLocationGridSize = src->maxSampleLocationGridSize;
     sampleLocationSubPixelBits = src->sampleLocationSubPixelBits;
     variableSampleLocations = src->variableSampleLocations;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<2; ++i) {
         sampleLocationCoordinateRange[i] = src->sampleLocationCoordinateRange[i];
     }
@@ -18866,9 +19854,9 @@
 
 safe_VkMultisamplePropertiesEXT::safe_VkMultisamplePropertiesEXT(const VkMultisamplePropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxSampleLocationGridSize(in_struct->maxSampleLocationGridSize)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMultisamplePropertiesEXT::safe_VkMultisamplePropertiesEXT()
@@ -18877,45 +19865,49 @@
 safe_VkMultisamplePropertiesEXT::safe_VkMultisamplePropertiesEXT(const safe_VkMultisamplePropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxSampleLocationGridSize = src.maxSampleLocationGridSize;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMultisamplePropertiesEXT& safe_VkMultisamplePropertiesEXT::operator=(const safe_VkMultisamplePropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxSampleLocationGridSize = src.maxSampleLocationGridSize;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMultisamplePropertiesEXT::~safe_VkMultisamplePropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMultisamplePropertiesEXT::initialize(const VkMultisamplePropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxSampleLocationGridSize = in_struct->maxSampleLocationGridSize;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMultisamplePropertiesEXT::initialize(const safe_VkMultisamplePropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxSampleLocationGridSize = src->maxSampleLocationGridSize;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     advancedBlendCoherentOperations(in_struct->advancedBlendCoherentOperations)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT()
@@ -18924,43 +19916,46 @@
 safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(const safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     advancedBlendCoherentOperations = src.advancedBlendCoherentOperations;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::operator=(const safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     advancedBlendCoherentOperations = src.advancedBlendCoherentOperations;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::~safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::initialize(const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     advancedBlendCoherentOperations = in_struct->advancedBlendCoherentOperations;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::initialize(const safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     advancedBlendCoherentOperations = src->advancedBlendCoherentOperations;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     advancedBlendMaxColorAttachments(in_struct->advancedBlendMaxColorAttachments),
     advancedBlendIndependentBlend(in_struct->advancedBlendIndependentBlend),
     advancedBlendNonPremultipliedSrcColor(in_struct->advancedBlendNonPremultipliedSrcColor),
@@ -18968,6 +19963,7 @@
     advancedBlendCorrelatedOverlap(in_struct->advancedBlendCorrelatedOverlap),
     advancedBlendAllOperations(in_struct->advancedBlendAllOperations)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT()
@@ -18976,67 +19972,71 @@
 safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(const safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     advancedBlendMaxColorAttachments = src.advancedBlendMaxColorAttachments;
     advancedBlendIndependentBlend = src.advancedBlendIndependentBlend;
     advancedBlendNonPremultipliedSrcColor = src.advancedBlendNonPremultipliedSrcColor;
     advancedBlendNonPremultipliedDstColor = src.advancedBlendNonPremultipliedDstColor;
     advancedBlendCorrelatedOverlap = src.advancedBlendCorrelatedOverlap;
     advancedBlendAllOperations = src.advancedBlendAllOperations;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::operator=(const safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     advancedBlendMaxColorAttachments = src.advancedBlendMaxColorAttachments;
     advancedBlendIndependentBlend = src.advancedBlendIndependentBlend;
     advancedBlendNonPremultipliedSrcColor = src.advancedBlendNonPremultipliedSrcColor;
     advancedBlendNonPremultipliedDstColor = src.advancedBlendNonPremultipliedDstColor;
     advancedBlendCorrelatedOverlap = src.advancedBlendCorrelatedOverlap;
     advancedBlendAllOperations = src.advancedBlendAllOperations;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::~safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::initialize(const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     advancedBlendMaxColorAttachments = in_struct->advancedBlendMaxColorAttachments;
     advancedBlendIndependentBlend = in_struct->advancedBlendIndependentBlend;
     advancedBlendNonPremultipliedSrcColor = in_struct->advancedBlendNonPremultipliedSrcColor;
     advancedBlendNonPremultipliedDstColor = in_struct->advancedBlendNonPremultipliedDstColor;
     advancedBlendCorrelatedOverlap = in_struct->advancedBlendCorrelatedOverlap;
     advancedBlendAllOperations = in_struct->advancedBlendAllOperations;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::initialize(const safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     advancedBlendMaxColorAttachments = src->advancedBlendMaxColorAttachments;
     advancedBlendIndependentBlend = src->advancedBlendIndependentBlend;
     advancedBlendNonPremultipliedSrcColor = src->advancedBlendNonPremultipliedSrcColor;
     advancedBlendNonPremultipliedDstColor = src->advancedBlendNonPremultipliedDstColor;
     advancedBlendCorrelatedOverlap = src->advancedBlendCorrelatedOverlap;
     advancedBlendAllOperations = src->advancedBlendAllOperations;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT(const VkPipelineColorBlendAdvancedStateCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     srcPremultiplied(in_struct->srcPremultiplied),
     dstPremultiplied(in_struct->dstPremultiplied),
     blendOverlap(in_struct->blendOverlap)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT()
@@ -19045,55 +20045,59 @@
 safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT(const safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     srcPremultiplied = src.srcPremultiplied;
     dstPremultiplied = src.dstPremultiplied;
     blendOverlap = src.blendOverlap;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT& safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::operator=(const safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     srcPremultiplied = src.srcPremultiplied;
     dstPremultiplied = src.dstPremultiplied;
     blendOverlap = src.blendOverlap;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::~safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::initialize(const VkPipelineColorBlendAdvancedStateCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     srcPremultiplied = in_struct->srcPremultiplied;
     dstPremultiplied = in_struct->dstPremultiplied;
     blendOverlap = in_struct->blendOverlap;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT::initialize(const safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     srcPremultiplied = src->srcPremultiplied;
     dstPremultiplied = src->dstPremultiplied;
     blendOverlap = src->blendOverlap;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineCoverageToColorStateCreateInfoNV::safe_VkPipelineCoverageToColorStateCreateInfoNV(const VkPipelineCoverageToColorStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     coverageToColorEnable(in_struct->coverageToColorEnable),
     coverageToColorLocation(in_struct->coverageToColorLocation)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineCoverageToColorStateCreateInfoNV::safe_VkPipelineCoverageToColorStateCreateInfoNV()
@@ -19102,57 +20106,61 @@
 safe_VkPipelineCoverageToColorStateCreateInfoNV::safe_VkPipelineCoverageToColorStateCreateInfoNV(const safe_VkPipelineCoverageToColorStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     coverageToColorEnable = src.coverageToColorEnable;
     coverageToColorLocation = src.coverageToColorLocation;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineCoverageToColorStateCreateInfoNV& safe_VkPipelineCoverageToColorStateCreateInfoNV::operator=(const safe_VkPipelineCoverageToColorStateCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     coverageToColorEnable = src.coverageToColorEnable;
     coverageToColorLocation = src.coverageToColorLocation;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineCoverageToColorStateCreateInfoNV::~safe_VkPipelineCoverageToColorStateCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineCoverageToColorStateCreateInfoNV::initialize(const VkPipelineCoverageToColorStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     coverageToColorEnable = in_struct->coverageToColorEnable;
     coverageToColorLocation = in_struct->coverageToColorLocation;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineCoverageToColorStateCreateInfoNV::initialize(const safe_VkPipelineCoverageToColorStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     coverageToColorEnable = src->coverageToColorEnable;
     coverageToColorLocation = src->coverageToColorLocation;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineCoverageModulationStateCreateInfoNV::safe_VkPipelineCoverageModulationStateCreateInfoNV(const VkPipelineCoverageModulationStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     coverageModulationMode(in_struct->coverageModulationMode),
     coverageModulationTableEnable(in_struct->coverageModulationTableEnable),
     coverageModulationTableCount(in_struct->coverageModulationTableCount),
     pCoverageModulationTable(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pCoverageModulationTable) {
         pCoverageModulationTable = new float[in_struct->coverageModulationTableCount];
         memcpy ((void *)pCoverageModulationTable, (void *)in_struct->pCoverageModulationTable, sizeof(float)*in_struct->coverageModulationTableCount);
@@ -19166,12 +20174,12 @@
 safe_VkPipelineCoverageModulationStateCreateInfoNV::safe_VkPipelineCoverageModulationStateCreateInfoNV(const safe_VkPipelineCoverageModulationStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     coverageModulationMode = src.coverageModulationMode;
     coverageModulationTableEnable = src.coverageModulationTableEnable;
     coverageModulationTableCount = src.coverageModulationTableCount;
     pCoverageModulationTable = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pCoverageModulationTable) {
         pCoverageModulationTable = new float[src.coverageModulationTableCount];
         memcpy ((void *)pCoverageModulationTable, (void *)src.pCoverageModulationTable, sizeof(float)*src.coverageModulationTableCount);
@@ -19184,14 +20192,16 @@
 
     if (pCoverageModulationTable)
         delete[] pCoverageModulationTable;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     coverageModulationMode = src.coverageModulationMode;
     coverageModulationTableEnable = src.coverageModulationTableEnable;
     coverageModulationTableCount = src.coverageModulationTableCount;
     pCoverageModulationTable = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pCoverageModulationTable) {
         pCoverageModulationTable = new float[src.coverageModulationTableCount];
         memcpy ((void *)pCoverageModulationTable, (void *)src.pCoverageModulationTable, sizeof(float)*src.coverageModulationTableCount);
@@ -19204,17 +20214,19 @@
 {
     if (pCoverageModulationTable)
         delete[] pCoverageModulationTable;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineCoverageModulationStateCreateInfoNV::initialize(const VkPipelineCoverageModulationStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     coverageModulationMode = in_struct->coverageModulationMode;
     coverageModulationTableEnable = in_struct->coverageModulationTableEnable;
     coverageModulationTableCount = in_struct->coverageModulationTableCount;
     pCoverageModulationTable = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pCoverageModulationTable) {
         pCoverageModulationTable = new float[in_struct->coverageModulationTableCount];
         memcpy ((void *)pCoverageModulationTable, (void *)in_struct->pCoverageModulationTable, sizeof(float)*in_struct->coverageModulationTableCount);
@@ -19224,12 +20236,12 @@
 void safe_VkPipelineCoverageModulationStateCreateInfoNV::initialize(const safe_VkPipelineCoverageModulationStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     coverageModulationMode = src->coverageModulationMode;
     coverageModulationTableEnable = src->coverageModulationTableEnable;
     coverageModulationTableCount = src->coverageModulationTableCount;
     pCoverageModulationTable = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pCoverageModulationTable) {
         pCoverageModulationTable = new float[src->coverageModulationTableCount];
         memcpy ((void *)pCoverageModulationTable, (void *)src->pCoverageModulationTable, sizeof(float)*src->coverageModulationTableCount);
@@ -19238,10 +20250,10 @@
 
 safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderSMCount(in_struct->shaderSMCount),
     shaderWarpsPerSM(in_struct->shaderWarpsPerSM)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV()
@@ -19250,49 +20262,53 @@
 safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV(const safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderSMCount = src.shaderSMCount;
     shaderWarpsPerSM = src.shaderWarpsPerSM;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::operator=(const safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderSMCount = src.shaderSMCount;
     shaderWarpsPerSM = src.shaderWarpsPerSM;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::~safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::initialize(const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderSMCount = in_struct->shaderSMCount;
     shaderWarpsPerSM = in_struct->shaderWarpsPerSM;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV::initialize(const safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderSMCount = src->shaderSMCount;
     shaderWarpsPerSM = src->shaderWarpsPerSM;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderSMBuiltins(in_struct->shaderSMBuiltins)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV()
@@ -19301,46 +20317,50 @@
 safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV(const safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderSMBuiltins = src.shaderSMBuiltins;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::operator=(const safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderSMBuiltins = src.shaderSMBuiltins;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::~safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::initialize(const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderSMBuiltins = in_struct->shaderSMBuiltins;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV::initialize(const safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderSMBuiltins = src->shaderSMBuiltins;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDrmFormatModifierPropertiesListEXT::safe_VkDrmFormatModifierPropertiesListEXT(const VkDrmFormatModifierPropertiesListEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     drmFormatModifierCount(in_struct->drmFormatModifierCount),
     pDrmFormatModifierProperties(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDrmFormatModifierProperties) {
         pDrmFormatModifierProperties = new VkDrmFormatModifierPropertiesEXT[in_struct->drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifierProperties, (void *)in_struct->pDrmFormatModifierProperties, sizeof(VkDrmFormatModifierPropertiesEXT)*in_struct->drmFormatModifierCount);
@@ -19354,9 +20374,9 @@
 safe_VkDrmFormatModifierPropertiesListEXT::safe_VkDrmFormatModifierPropertiesListEXT(const safe_VkDrmFormatModifierPropertiesListEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifierCount = src.drmFormatModifierCount;
     pDrmFormatModifierProperties = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDrmFormatModifierProperties) {
         pDrmFormatModifierProperties = new VkDrmFormatModifierPropertiesEXT[src.drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifierProperties, (void *)src.pDrmFormatModifierProperties, sizeof(VkDrmFormatModifierPropertiesEXT)*src.drmFormatModifierCount);
@@ -19369,11 +20389,13 @@
 
     if (pDrmFormatModifierProperties)
         delete[] pDrmFormatModifierProperties;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifierCount = src.drmFormatModifierCount;
     pDrmFormatModifierProperties = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDrmFormatModifierProperties) {
         pDrmFormatModifierProperties = new VkDrmFormatModifierPropertiesEXT[src.drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifierProperties, (void *)src.pDrmFormatModifierProperties, sizeof(VkDrmFormatModifierPropertiesEXT)*src.drmFormatModifierCount);
@@ -19386,14 +20408,16 @@
 {
     if (pDrmFormatModifierProperties)
         delete[] pDrmFormatModifierProperties;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDrmFormatModifierPropertiesListEXT::initialize(const VkDrmFormatModifierPropertiesListEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     drmFormatModifierCount = in_struct->drmFormatModifierCount;
     pDrmFormatModifierProperties = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDrmFormatModifierProperties) {
         pDrmFormatModifierProperties = new VkDrmFormatModifierPropertiesEXT[in_struct->drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifierProperties, (void *)in_struct->pDrmFormatModifierProperties, sizeof(VkDrmFormatModifierPropertiesEXT)*in_struct->drmFormatModifierCount);
@@ -19403,9 +20427,9 @@
 void safe_VkDrmFormatModifierPropertiesListEXT::initialize(const safe_VkDrmFormatModifierPropertiesListEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     drmFormatModifierCount = src->drmFormatModifierCount;
     pDrmFormatModifierProperties = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDrmFormatModifierProperties) {
         pDrmFormatModifierProperties = new VkDrmFormatModifierPropertiesEXT[src->drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifierProperties, (void *)src->pDrmFormatModifierProperties, sizeof(VkDrmFormatModifierPropertiesEXT)*src->drmFormatModifierCount);
@@ -19414,12 +20438,12 @@
 
 safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT::safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     drmFormatModifier(in_struct->drmFormatModifier),
     sharingMode(in_struct->sharingMode),
     queueFamilyIndexCount(in_struct->queueFamilyIndexCount),
     pQueueFamilyIndices(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -19433,11 +20457,11 @@
 safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT::safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT(const safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifier = src.drmFormatModifier;
     sharingMode = src.sharingMode;
     queueFamilyIndexCount = src.queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -19450,13 +20474,15 @@
 
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifier = src.drmFormatModifier;
     sharingMode = src.sharingMode;
     queueFamilyIndexCount = src.queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src.queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src.pQueueFamilyIndices, sizeof(uint32_t)*src.queueFamilyIndexCount);
@@ -19469,16 +20495,18 @@
 {
     if (pQueueFamilyIndices)
         delete[] pQueueFamilyIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT::initialize(const VkPhysicalDeviceImageDrmFormatModifierInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     drmFormatModifier = in_struct->drmFormatModifier;
     sharingMode = in_struct->sharingMode;
     queueFamilyIndexCount = in_struct->queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[in_struct->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)in_struct->pQueueFamilyIndices, sizeof(uint32_t)*in_struct->queueFamilyIndexCount);
@@ -19488,11 +20516,11 @@
 void safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT::initialize(const safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     drmFormatModifier = src->drmFormatModifier;
     sharingMode = src->sharingMode;
     queueFamilyIndexCount = src->queueFamilyIndexCount;
     pQueueFamilyIndices = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pQueueFamilyIndices) {
         pQueueFamilyIndices = new uint32_t[src->queueFamilyIndexCount];
         memcpy ((void *)pQueueFamilyIndices, (void *)src->pQueueFamilyIndices, sizeof(uint32_t)*src->queueFamilyIndexCount);
@@ -19501,10 +20529,10 @@
 
 safe_VkImageDrmFormatModifierListCreateInfoEXT::safe_VkImageDrmFormatModifierListCreateInfoEXT(const VkImageDrmFormatModifierListCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     drmFormatModifierCount(in_struct->drmFormatModifierCount),
     pDrmFormatModifiers(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDrmFormatModifiers) {
         pDrmFormatModifiers = new uint64_t[in_struct->drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifiers, (void *)in_struct->pDrmFormatModifiers, sizeof(uint64_t)*in_struct->drmFormatModifierCount);
@@ -19518,9 +20546,9 @@
 safe_VkImageDrmFormatModifierListCreateInfoEXT::safe_VkImageDrmFormatModifierListCreateInfoEXT(const safe_VkImageDrmFormatModifierListCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifierCount = src.drmFormatModifierCount;
     pDrmFormatModifiers = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDrmFormatModifiers) {
         pDrmFormatModifiers = new uint64_t[src.drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifiers, (void *)src.pDrmFormatModifiers, sizeof(uint64_t)*src.drmFormatModifierCount);
@@ -19533,11 +20561,13 @@
 
     if (pDrmFormatModifiers)
         delete[] pDrmFormatModifiers;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifierCount = src.drmFormatModifierCount;
     pDrmFormatModifiers = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDrmFormatModifiers) {
         pDrmFormatModifiers = new uint64_t[src.drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifiers, (void *)src.pDrmFormatModifiers, sizeof(uint64_t)*src.drmFormatModifierCount);
@@ -19550,14 +20580,16 @@
 {
     if (pDrmFormatModifiers)
         delete[] pDrmFormatModifiers;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageDrmFormatModifierListCreateInfoEXT::initialize(const VkImageDrmFormatModifierListCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     drmFormatModifierCount = in_struct->drmFormatModifierCount;
     pDrmFormatModifiers = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDrmFormatModifiers) {
         pDrmFormatModifiers = new uint64_t[in_struct->drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifiers, (void *)in_struct->pDrmFormatModifiers, sizeof(uint64_t)*in_struct->drmFormatModifierCount);
@@ -19567,9 +20599,9 @@
 void safe_VkImageDrmFormatModifierListCreateInfoEXT::initialize(const safe_VkImageDrmFormatModifierListCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     drmFormatModifierCount = src->drmFormatModifierCount;
     pDrmFormatModifiers = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDrmFormatModifiers) {
         pDrmFormatModifiers = new uint64_t[src->drmFormatModifierCount];
         memcpy ((void *)pDrmFormatModifiers, (void *)src->pDrmFormatModifiers, sizeof(uint64_t)*src->drmFormatModifierCount);
@@ -19578,11 +20610,11 @@
 
 safe_VkImageDrmFormatModifierExplicitCreateInfoEXT::safe_VkImageDrmFormatModifierExplicitCreateInfoEXT(const VkImageDrmFormatModifierExplicitCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     drmFormatModifier(in_struct->drmFormatModifier),
     drmFormatModifierPlaneCount(in_struct->drmFormatModifierPlaneCount),
     pPlaneLayouts(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPlaneLayouts) {
         pPlaneLayouts = new VkSubresourceLayout[in_struct->drmFormatModifierPlaneCount];
         memcpy ((void *)pPlaneLayouts, (void *)in_struct->pPlaneLayouts, sizeof(VkSubresourceLayout)*in_struct->drmFormatModifierPlaneCount);
@@ -19596,10 +20628,10 @@
 safe_VkImageDrmFormatModifierExplicitCreateInfoEXT::safe_VkImageDrmFormatModifierExplicitCreateInfoEXT(const safe_VkImageDrmFormatModifierExplicitCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifier = src.drmFormatModifier;
     drmFormatModifierPlaneCount = src.drmFormatModifierPlaneCount;
     pPlaneLayouts = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPlaneLayouts) {
         pPlaneLayouts = new VkSubresourceLayout[src.drmFormatModifierPlaneCount];
         memcpy ((void *)pPlaneLayouts, (void *)src.pPlaneLayouts, sizeof(VkSubresourceLayout)*src.drmFormatModifierPlaneCount);
@@ -19612,12 +20644,14 @@
 
     if (pPlaneLayouts)
         delete[] pPlaneLayouts;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifier = src.drmFormatModifier;
     drmFormatModifierPlaneCount = src.drmFormatModifierPlaneCount;
     pPlaneLayouts = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPlaneLayouts) {
         pPlaneLayouts = new VkSubresourceLayout[src.drmFormatModifierPlaneCount];
         memcpy ((void *)pPlaneLayouts, (void *)src.pPlaneLayouts, sizeof(VkSubresourceLayout)*src.drmFormatModifierPlaneCount);
@@ -19630,15 +20664,17 @@
 {
     if (pPlaneLayouts)
         delete[] pPlaneLayouts;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageDrmFormatModifierExplicitCreateInfoEXT::initialize(const VkImageDrmFormatModifierExplicitCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     drmFormatModifier = in_struct->drmFormatModifier;
     drmFormatModifierPlaneCount = in_struct->drmFormatModifierPlaneCount;
     pPlaneLayouts = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPlaneLayouts) {
         pPlaneLayouts = new VkSubresourceLayout[in_struct->drmFormatModifierPlaneCount];
         memcpy ((void *)pPlaneLayouts, (void *)in_struct->pPlaneLayouts, sizeof(VkSubresourceLayout)*in_struct->drmFormatModifierPlaneCount);
@@ -19648,10 +20684,10 @@
 void safe_VkImageDrmFormatModifierExplicitCreateInfoEXT::initialize(const safe_VkImageDrmFormatModifierExplicitCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     drmFormatModifier = src->drmFormatModifier;
     drmFormatModifierPlaneCount = src->drmFormatModifierPlaneCount;
     pPlaneLayouts = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pPlaneLayouts) {
         pPlaneLayouts = new VkSubresourceLayout[src->drmFormatModifierPlaneCount];
         memcpy ((void *)pPlaneLayouts, (void *)src->pPlaneLayouts, sizeof(VkSubresourceLayout)*src->drmFormatModifierPlaneCount);
@@ -19660,9 +20696,9 @@
 
 safe_VkImageDrmFormatModifierPropertiesEXT::safe_VkImageDrmFormatModifierPropertiesEXT(const VkImageDrmFormatModifierPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     drmFormatModifier(in_struct->drmFormatModifier)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageDrmFormatModifierPropertiesEXT::safe_VkImageDrmFormatModifierPropertiesEXT()
@@ -19671,47 +20707,51 @@
 safe_VkImageDrmFormatModifierPropertiesEXT::safe_VkImageDrmFormatModifierPropertiesEXT(const safe_VkImageDrmFormatModifierPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifier = src.drmFormatModifier;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageDrmFormatModifierPropertiesEXT& safe_VkImageDrmFormatModifierPropertiesEXT::operator=(const safe_VkImageDrmFormatModifierPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     drmFormatModifier = src.drmFormatModifier;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageDrmFormatModifierPropertiesEXT::~safe_VkImageDrmFormatModifierPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageDrmFormatModifierPropertiesEXT::initialize(const VkImageDrmFormatModifierPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     drmFormatModifier = in_struct->drmFormatModifier;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageDrmFormatModifierPropertiesEXT::initialize(const safe_VkImageDrmFormatModifierPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     drmFormatModifier = src->drmFormatModifier;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkValidationCacheCreateInfoEXT::safe_VkValidationCacheCreateInfoEXT(const VkValidationCacheCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     initialDataSize(in_struct->initialDataSize),
     pInitialData(in_struct->pInitialData)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkValidationCacheCreateInfoEXT::safe_VkValidationCacheCreateInfoEXT()
@@ -19720,53 +20760,57 @@
 safe_VkValidationCacheCreateInfoEXT::safe_VkValidationCacheCreateInfoEXT(const safe_VkValidationCacheCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     initialDataSize = src.initialDataSize;
     pInitialData = src.pInitialData;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkValidationCacheCreateInfoEXT& safe_VkValidationCacheCreateInfoEXT::operator=(const safe_VkValidationCacheCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     initialDataSize = src.initialDataSize;
     pInitialData = src.pInitialData;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkValidationCacheCreateInfoEXT::~safe_VkValidationCacheCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkValidationCacheCreateInfoEXT::initialize(const VkValidationCacheCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     initialDataSize = in_struct->initialDataSize;
     pInitialData = in_struct->pInitialData;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkValidationCacheCreateInfoEXT::initialize(const safe_VkValidationCacheCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     initialDataSize = src->initialDataSize;
     pInitialData = src->pInitialData;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkShaderModuleValidationCacheCreateInfoEXT::safe_VkShaderModuleValidationCacheCreateInfoEXT(const VkShaderModuleValidationCacheCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     validationCache(in_struct->validationCache)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkShaderModuleValidationCacheCreateInfoEXT::safe_VkShaderModuleValidationCacheCreateInfoEXT()
@@ -19775,46 +20819,50 @@
 safe_VkShaderModuleValidationCacheCreateInfoEXT::safe_VkShaderModuleValidationCacheCreateInfoEXT(const safe_VkShaderModuleValidationCacheCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     validationCache = src.validationCache;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkShaderModuleValidationCacheCreateInfoEXT& safe_VkShaderModuleValidationCacheCreateInfoEXT::operator=(const safe_VkShaderModuleValidationCacheCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     validationCache = src.validationCache;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkShaderModuleValidationCacheCreateInfoEXT::~safe_VkShaderModuleValidationCacheCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkShaderModuleValidationCacheCreateInfoEXT::initialize(const VkShaderModuleValidationCacheCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     validationCache = in_struct->validationCache;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkShaderModuleValidationCacheCreateInfoEXT::initialize(const safe_VkShaderModuleValidationCacheCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     validationCache = src->validationCache;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     bindingCount(in_struct->bindingCount),
     pBindingFlags(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pBindingFlags) {
         pBindingFlags = new VkDescriptorBindingFlagsEXT[in_struct->bindingCount];
         memcpy ((void *)pBindingFlags, (void *)in_struct->pBindingFlags, sizeof(VkDescriptorBindingFlagsEXT)*in_struct->bindingCount);
@@ -19828,9 +20876,9 @@
 safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(const safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     bindingCount = src.bindingCount;
     pBindingFlags = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pBindingFlags) {
         pBindingFlags = new VkDescriptorBindingFlagsEXT[src.bindingCount];
         memcpy ((void *)pBindingFlags, (void *)src.pBindingFlags, sizeof(VkDescriptorBindingFlagsEXT)*src.bindingCount);
@@ -19843,11 +20891,13 @@
 
     if (pBindingFlags)
         delete[] pBindingFlags;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     bindingCount = src.bindingCount;
     pBindingFlags = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pBindingFlags) {
         pBindingFlags = new VkDescriptorBindingFlagsEXT[src.bindingCount];
         memcpy ((void *)pBindingFlags, (void *)src.pBindingFlags, sizeof(VkDescriptorBindingFlagsEXT)*src.bindingCount);
@@ -19860,14 +20910,16 @@
 {
     if (pBindingFlags)
         delete[] pBindingFlags;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::initialize(const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     bindingCount = in_struct->bindingCount;
     pBindingFlags = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pBindingFlags) {
         pBindingFlags = new VkDescriptorBindingFlagsEXT[in_struct->bindingCount];
         memcpy ((void *)pBindingFlags, (void *)in_struct->pBindingFlags, sizeof(VkDescriptorBindingFlagsEXT)*in_struct->bindingCount);
@@ -19877,9 +20929,9 @@
 void safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::initialize(const safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     bindingCount = src->bindingCount;
     pBindingFlags = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pBindingFlags) {
         pBindingFlags = new VkDescriptorBindingFlagsEXT[src->bindingCount];
         memcpy ((void *)pBindingFlags, (void *)src->pBindingFlags, sizeof(VkDescriptorBindingFlagsEXT)*src->bindingCount);
@@ -19888,7 +20940,6 @@
 
 safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderInputAttachmentArrayDynamicIndexing(in_struct->shaderInputAttachmentArrayDynamicIndexing),
     shaderUniformTexelBufferArrayDynamicIndexing(in_struct->shaderUniformTexelBufferArrayDynamicIndexing),
     shaderStorageTexelBufferArrayDynamicIndexing(in_struct->shaderStorageTexelBufferArrayDynamicIndexing),
@@ -19910,6 +20961,7 @@
     descriptorBindingVariableDescriptorCount(in_struct->descriptorBindingVariableDescriptorCount),
     runtimeDescriptorArray(in_struct->runtimeDescriptorArray)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT()
@@ -19918,7 +20970,6 @@
 safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(const safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderInputAttachmentArrayDynamicIndexing = src.shaderInputAttachmentArrayDynamicIndexing;
     shaderUniformTexelBufferArrayDynamicIndexing = src.shaderUniformTexelBufferArrayDynamicIndexing;
     shaderStorageTexelBufferArrayDynamicIndexing = src.shaderStorageTexelBufferArrayDynamicIndexing;
@@ -19939,15 +20990,17 @@
     descriptorBindingPartiallyBound = src.descriptorBindingPartiallyBound;
     descriptorBindingVariableDescriptorCount = src.descriptorBindingVariableDescriptorCount;
     runtimeDescriptorArray = src.runtimeDescriptorArray;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT& safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::operator=(const safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderInputAttachmentArrayDynamicIndexing = src.shaderInputAttachmentArrayDynamicIndexing;
     shaderUniformTexelBufferArrayDynamicIndexing = src.shaderUniformTexelBufferArrayDynamicIndexing;
     shaderStorageTexelBufferArrayDynamicIndexing = src.shaderStorageTexelBufferArrayDynamicIndexing;
@@ -19968,18 +21021,20 @@
     descriptorBindingPartiallyBound = src.descriptorBindingPartiallyBound;
     descriptorBindingVariableDescriptorCount = src.descriptorBindingVariableDescriptorCount;
     runtimeDescriptorArray = src.runtimeDescriptorArray;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::~safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::initialize(const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderInputAttachmentArrayDynamicIndexing = in_struct->shaderInputAttachmentArrayDynamicIndexing;
     shaderUniformTexelBufferArrayDynamicIndexing = in_struct->shaderUniformTexelBufferArrayDynamicIndexing;
     shaderStorageTexelBufferArrayDynamicIndexing = in_struct->shaderStorageTexelBufferArrayDynamicIndexing;
@@ -20000,12 +21055,12 @@
     descriptorBindingPartiallyBound = in_struct->descriptorBindingPartiallyBound;
     descriptorBindingVariableDescriptorCount = in_struct->descriptorBindingVariableDescriptorCount;
     runtimeDescriptorArray = in_struct->runtimeDescriptorArray;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT::initialize(const safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderInputAttachmentArrayDynamicIndexing = src->shaderInputAttachmentArrayDynamicIndexing;
     shaderUniformTexelBufferArrayDynamicIndexing = src->shaderUniformTexelBufferArrayDynamicIndexing;
     shaderStorageTexelBufferArrayDynamicIndexing = src->shaderStorageTexelBufferArrayDynamicIndexing;
@@ -20026,11 +21081,11 @@
     descriptorBindingPartiallyBound = src->descriptorBindingPartiallyBound;
     descriptorBindingVariableDescriptorCount = src->descriptorBindingVariableDescriptorCount;
     runtimeDescriptorArray = src->runtimeDescriptorArray;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxUpdateAfterBindDescriptorsInAllPools(in_struct->maxUpdateAfterBindDescriptorsInAllPools),
     shaderUniformBufferArrayNonUniformIndexingNative(in_struct->shaderUniformBufferArrayNonUniformIndexingNative),
     shaderSampledImageArrayNonUniformIndexingNative(in_struct->shaderSampledImageArrayNonUniformIndexingNative),
@@ -20055,6 +21110,7 @@
     maxDescriptorSetUpdateAfterBindStorageImages(in_struct->maxDescriptorSetUpdateAfterBindStorageImages),
     maxDescriptorSetUpdateAfterBindInputAttachments(in_struct->maxDescriptorSetUpdateAfterBindInputAttachments)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT()
@@ -20063,7 +21119,6 @@
 safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(const safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxUpdateAfterBindDescriptorsInAllPools = src.maxUpdateAfterBindDescriptorsInAllPools;
     shaderUniformBufferArrayNonUniformIndexingNative = src.shaderUniformBufferArrayNonUniformIndexingNative;
     shaderSampledImageArrayNonUniformIndexingNative = src.shaderSampledImageArrayNonUniformIndexingNative;
@@ -20087,15 +21142,17 @@
     maxDescriptorSetUpdateAfterBindSampledImages = src.maxDescriptorSetUpdateAfterBindSampledImages;
     maxDescriptorSetUpdateAfterBindStorageImages = src.maxDescriptorSetUpdateAfterBindStorageImages;
     maxDescriptorSetUpdateAfterBindInputAttachments = src.maxDescriptorSetUpdateAfterBindInputAttachments;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT& safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::operator=(const safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxUpdateAfterBindDescriptorsInAllPools = src.maxUpdateAfterBindDescriptorsInAllPools;
     shaderUniformBufferArrayNonUniformIndexingNative = src.shaderUniformBufferArrayNonUniformIndexingNative;
     shaderSampledImageArrayNonUniformIndexingNative = src.shaderSampledImageArrayNonUniformIndexingNative;
@@ -20119,18 +21176,20 @@
     maxDescriptorSetUpdateAfterBindSampledImages = src.maxDescriptorSetUpdateAfterBindSampledImages;
     maxDescriptorSetUpdateAfterBindStorageImages = src.maxDescriptorSetUpdateAfterBindStorageImages;
     maxDescriptorSetUpdateAfterBindInputAttachments = src.maxDescriptorSetUpdateAfterBindInputAttachments;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::~safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::initialize(const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxUpdateAfterBindDescriptorsInAllPools = in_struct->maxUpdateAfterBindDescriptorsInAllPools;
     shaderUniformBufferArrayNonUniformIndexingNative = in_struct->shaderUniformBufferArrayNonUniformIndexingNative;
     shaderSampledImageArrayNonUniformIndexingNative = in_struct->shaderSampledImageArrayNonUniformIndexingNative;
@@ -20154,12 +21213,12 @@
     maxDescriptorSetUpdateAfterBindSampledImages = in_struct->maxDescriptorSetUpdateAfterBindSampledImages;
     maxDescriptorSetUpdateAfterBindStorageImages = in_struct->maxDescriptorSetUpdateAfterBindStorageImages;
     maxDescriptorSetUpdateAfterBindInputAttachments = in_struct->maxDescriptorSetUpdateAfterBindInputAttachments;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT::initialize(const safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxUpdateAfterBindDescriptorsInAllPools = src->maxUpdateAfterBindDescriptorsInAllPools;
     shaderUniformBufferArrayNonUniformIndexingNative = src->shaderUniformBufferArrayNonUniformIndexingNative;
     shaderSampledImageArrayNonUniformIndexingNative = src->shaderSampledImageArrayNonUniformIndexingNative;
@@ -20183,14 +21242,15 @@
     maxDescriptorSetUpdateAfterBindSampledImages = src->maxDescriptorSetUpdateAfterBindSampledImages;
     maxDescriptorSetUpdateAfterBindStorageImages = src->maxDescriptorSetUpdateAfterBindStorageImages;
     maxDescriptorSetUpdateAfterBindInputAttachments = src->maxDescriptorSetUpdateAfterBindInputAttachments;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT::safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     descriptorSetCount(in_struct->descriptorSetCount),
     pDescriptorCounts(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDescriptorCounts) {
         pDescriptorCounts = new uint32_t[in_struct->descriptorSetCount];
         memcpy ((void *)pDescriptorCounts, (void *)in_struct->pDescriptorCounts, sizeof(uint32_t)*in_struct->descriptorSetCount);
@@ -20204,9 +21264,9 @@
 safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT::safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(const safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     descriptorSetCount = src.descriptorSetCount;
     pDescriptorCounts = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDescriptorCounts) {
         pDescriptorCounts = new uint32_t[src.descriptorSetCount];
         memcpy ((void *)pDescriptorCounts, (void *)src.pDescriptorCounts, sizeof(uint32_t)*src.descriptorSetCount);
@@ -20219,11 +21279,13 @@
 
     if (pDescriptorCounts)
         delete[] pDescriptorCounts;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     descriptorSetCount = src.descriptorSetCount;
     pDescriptorCounts = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDescriptorCounts) {
         pDescriptorCounts = new uint32_t[src.descriptorSetCount];
         memcpy ((void *)pDescriptorCounts, (void *)src.pDescriptorCounts, sizeof(uint32_t)*src.descriptorSetCount);
@@ -20236,14 +21298,16 @@
 {
     if (pDescriptorCounts)
         delete[] pDescriptorCounts;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT::initialize(const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     descriptorSetCount = in_struct->descriptorSetCount;
     pDescriptorCounts = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDescriptorCounts) {
         pDescriptorCounts = new uint32_t[in_struct->descriptorSetCount];
         memcpy ((void *)pDescriptorCounts, (void *)in_struct->pDescriptorCounts, sizeof(uint32_t)*in_struct->descriptorSetCount);
@@ -20253,9 +21317,9 @@
 void safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT::initialize(const safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     descriptorSetCount = src->descriptorSetCount;
     pDescriptorCounts = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDescriptorCounts) {
         pDescriptorCounts = new uint32_t[src->descriptorSetCount];
         memcpy ((void *)pDescriptorCounts, (void *)src->pDescriptorCounts, sizeof(uint32_t)*src->descriptorSetCount);
@@ -20264,9 +21328,9 @@
 
 safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxVariableDescriptorCount(in_struct->maxVariableDescriptorCount)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT()
@@ -20275,38 +21339,42 @@
 safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(const safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxVariableDescriptorCount = src.maxVariableDescriptorCount;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::operator=(const safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxVariableDescriptorCount = src.maxVariableDescriptorCount;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::~safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::initialize(const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxVariableDescriptorCount = in_struct->maxVariableDescriptorCount;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT::initialize(const safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxVariableDescriptorCount = src->maxVariableDescriptorCount;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkShadingRatePaletteNV::safe_VkShadingRatePaletteNV(const VkShadingRatePaletteNV* in_struct) :
@@ -20378,11 +21446,11 @@
 
 safe_VkPipelineViewportShadingRateImageStateCreateInfoNV::safe_VkPipelineViewportShadingRateImageStateCreateInfoNV(const VkPipelineViewportShadingRateImageStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shadingRateImageEnable(in_struct->shadingRateImageEnable),
     viewportCount(in_struct->viewportCount),
     pShadingRatePalettes(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (viewportCount && in_struct->pShadingRatePalettes) {
         pShadingRatePalettes = new safe_VkShadingRatePaletteNV[viewportCount];
         for (uint32_t i=0; i<viewportCount; ++i) {
@@ -20398,10 +21466,10 @@
 safe_VkPipelineViewportShadingRateImageStateCreateInfoNV::safe_VkPipelineViewportShadingRateImageStateCreateInfoNV(const safe_VkPipelineViewportShadingRateImageStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shadingRateImageEnable = src.shadingRateImageEnable;
     viewportCount = src.viewportCount;
     pShadingRatePalettes = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (viewportCount && src.pShadingRatePalettes) {
         pShadingRatePalettes = new safe_VkShadingRatePaletteNV[viewportCount];
         for (uint32_t i=0; i<viewportCount; ++i) {
@@ -20416,12 +21484,14 @@
 
     if (pShadingRatePalettes)
         delete[] pShadingRatePalettes;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shadingRateImageEnable = src.shadingRateImageEnable;
     viewportCount = src.viewportCount;
     pShadingRatePalettes = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (viewportCount && src.pShadingRatePalettes) {
         pShadingRatePalettes = new safe_VkShadingRatePaletteNV[viewportCount];
         for (uint32_t i=0; i<viewportCount; ++i) {
@@ -20436,15 +21506,17 @@
 {
     if (pShadingRatePalettes)
         delete[] pShadingRatePalettes;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineViewportShadingRateImageStateCreateInfoNV::initialize(const VkPipelineViewportShadingRateImageStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shadingRateImageEnable = in_struct->shadingRateImageEnable;
     viewportCount = in_struct->viewportCount;
     pShadingRatePalettes = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (viewportCount && in_struct->pShadingRatePalettes) {
         pShadingRatePalettes = new safe_VkShadingRatePaletteNV[viewportCount];
         for (uint32_t i=0; i<viewportCount; ++i) {
@@ -20456,10 +21528,10 @@
 void safe_VkPipelineViewportShadingRateImageStateCreateInfoNV::initialize(const safe_VkPipelineViewportShadingRateImageStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shadingRateImageEnable = src->shadingRateImageEnable;
     viewportCount = src->viewportCount;
     pShadingRatePalettes = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (viewportCount && src->pShadingRatePalettes) {
         pShadingRatePalettes = new safe_VkShadingRatePaletteNV[viewportCount];
         for (uint32_t i=0; i<viewportCount; ++i) {
@@ -20470,10 +21542,10 @@
 
 safe_VkPhysicalDeviceShadingRateImageFeaturesNV::safe_VkPhysicalDeviceShadingRateImageFeaturesNV(const VkPhysicalDeviceShadingRateImageFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shadingRateImage(in_struct->shadingRateImage),
     shadingRateCoarseSampleOrder(in_struct->shadingRateCoarseSampleOrder)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShadingRateImageFeaturesNV::safe_VkPhysicalDeviceShadingRateImageFeaturesNV()
@@ -20482,51 +21554,55 @@
 safe_VkPhysicalDeviceShadingRateImageFeaturesNV::safe_VkPhysicalDeviceShadingRateImageFeaturesNV(const safe_VkPhysicalDeviceShadingRateImageFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shadingRateImage = src.shadingRateImage;
     shadingRateCoarseSampleOrder = src.shadingRateCoarseSampleOrder;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShadingRateImageFeaturesNV& safe_VkPhysicalDeviceShadingRateImageFeaturesNV::operator=(const safe_VkPhysicalDeviceShadingRateImageFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shadingRateImage = src.shadingRateImage;
     shadingRateCoarseSampleOrder = src.shadingRateCoarseSampleOrder;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShadingRateImageFeaturesNV::~safe_VkPhysicalDeviceShadingRateImageFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShadingRateImageFeaturesNV::initialize(const VkPhysicalDeviceShadingRateImageFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shadingRateImage = in_struct->shadingRateImage;
     shadingRateCoarseSampleOrder = in_struct->shadingRateCoarseSampleOrder;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShadingRateImageFeaturesNV::initialize(const safe_VkPhysicalDeviceShadingRateImageFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shadingRateImage = src->shadingRateImage;
     shadingRateCoarseSampleOrder = src->shadingRateCoarseSampleOrder;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShadingRateImagePropertiesNV::safe_VkPhysicalDeviceShadingRateImagePropertiesNV(const VkPhysicalDeviceShadingRateImagePropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shadingRateTexelSize(in_struct->shadingRateTexelSize),
     shadingRatePaletteSize(in_struct->shadingRatePaletteSize),
     shadingRateMaxCoarseSamples(in_struct->shadingRateMaxCoarseSamples)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShadingRateImagePropertiesNV::safe_VkPhysicalDeviceShadingRateImagePropertiesNV()
@@ -20535,46 +21611,50 @@
 safe_VkPhysicalDeviceShadingRateImagePropertiesNV::safe_VkPhysicalDeviceShadingRateImagePropertiesNV(const safe_VkPhysicalDeviceShadingRateImagePropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shadingRateTexelSize = src.shadingRateTexelSize;
     shadingRatePaletteSize = src.shadingRatePaletteSize;
     shadingRateMaxCoarseSamples = src.shadingRateMaxCoarseSamples;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShadingRateImagePropertiesNV& safe_VkPhysicalDeviceShadingRateImagePropertiesNV::operator=(const safe_VkPhysicalDeviceShadingRateImagePropertiesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shadingRateTexelSize = src.shadingRateTexelSize;
     shadingRatePaletteSize = src.shadingRatePaletteSize;
     shadingRateMaxCoarseSamples = src.shadingRateMaxCoarseSamples;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShadingRateImagePropertiesNV::~safe_VkPhysicalDeviceShadingRateImagePropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShadingRateImagePropertiesNV::initialize(const VkPhysicalDeviceShadingRateImagePropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shadingRateTexelSize = in_struct->shadingRateTexelSize;
     shadingRatePaletteSize = in_struct->shadingRatePaletteSize;
     shadingRateMaxCoarseSamples = in_struct->shadingRateMaxCoarseSamples;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShadingRateImagePropertiesNV::initialize(const safe_VkPhysicalDeviceShadingRateImagePropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shadingRateTexelSize = src->shadingRateTexelSize;
     shadingRatePaletteSize = src->shadingRatePaletteSize;
     shadingRateMaxCoarseSamples = src->shadingRateMaxCoarseSamples;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCoarseSampleOrderCustomNV::safe_VkCoarseSampleOrderCustomNV(const VkCoarseSampleOrderCustomNV* in_struct) :
@@ -20656,11 +21736,11 @@
 
 safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV::safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     sampleOrderType(in_struct->sampleOrderType),
     customSampleOrderCount(in_struct->customSampleOrderCount),
     pCustomSampleOrders(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (customSampleOrderCount && in_struct->pCustomSampleOrders) {
         pCustomSampleOrders = new safe_VkCoarseSampleOrderCustomNV[customSampleOrderCount];
         for (uint32_t i=0; i<customSampleOrderCount; ++i) {
@@ -20676,10 +21756,10 @@
 safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV::safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV(const safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     sampleOrderType = src.sampleOrderType;
     customSampleOrderCount = src.customSampleOrderCount;
     pCustomSampleOrders = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (customSampleOrderCount && src.pCustomSampleOrders) {
         pCustomSampleOrders = new safe_VkCoarseSampleOrderCustomNV[customSampleOrderCount];
         for (uint32_t i=0; i<customSampleOrderCount; ++i) {
@@ -20694,12 +21774,14 @@
 
     if (pCustomSampleOrders)
         delete[] pCustomSampleOrders;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     sampleOrderType = src.sampleOrderType;
     customSampleOrderCount = src.customSampleOrderCount;
     pCustomSampleOrders = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (customSampleOrderCount && src.pCustomSampleOrders) {
         pCustomSampleOrders = new safe_VkCoarseSampleOrderCustomNV[customSampleOrderCount];
         for (uint32_t i=0; i<customSampleOrderCount; ++i) {
@@ -20714,15 +21796,17 @@
 {
     if (pCustomSampleOrders)
         delete[] pCustomSampleOrders;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV::initialize(const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     sampleOrderType = in_struct->sampleOrderType;
     customSampleOrderCount = in_struct->customSampleOrderCount;
     pCustomSampleOrders = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (customSampleOrderCount && in_struct->pCustomSampleOrders) {
         pCustomSampleOrders = new safe_VkCoarseSampleOrderCustomNV[customSampleOrderCount];
         for (uint32_t i=0; i<customSampleOrderCount; ++i) {
@@ -20734,10 +21818,10 @@
 void safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV::initialize(const safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     sampleOrderType = src->sampleOrderType;
     customSampleOrderCount = src->customSampleOrderCount;
     pCustomSampleOrders = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (customSampleOrderCount && src->pCustomSampleOrders) {
         pCustomSampleOrders = new safe_VkCoarseSampleOrderCustomNV[customSampleOrderCount];
         for (uint32_t i=0; i<customSampleOrderCount; ++i) {
@@ -20748,13 +21832,13 @@
 
 safe_VkRayTracingShaderGroupCreateInfoNV::safe_VkRayTracingShaderGroupCreateInfoNV(const VkRayTracingShaderGroupCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     type(in_struct->type),
     generalShader(in_struct->generalShader),
     closestHitShader(in_struct->closestHitShader),
     anyHitShader(in_struct->anyHitShader),
     intersectionShader(in_struct->intersectionShader)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkRayTracingShaderGroupCreateInfoNV::safe_VkRayTracingShaderGroupCreateInfoNV()
@@ -20763,59 +21847,62 @@
 safe_VkRayTracingShaderGroupCreateInfoNV::safe_VkRayTracingShaderGroupCreateInfoNV(const safe_VkRayTracingShaderGroupCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     generalShader = src.generalShader;
     closestHitShader = src.closestHitShader;
     anyHitShader = src.anyHitShader;
     intersectionShader = src.intersectionShader;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkRayTracingShaderGroupCreateInfoNV& safe_VkRayTracingShaderGroupCreateInfoNV::operator=(const safe_VkRayTracingShaderGroupCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     generalShader = src.generalShader;
     closestHitShader = src.closestHitShader;
     anyHitShader = src.anyHitShader;
     intersectionShader = src.intersectionShader;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkRayTracingShaderGroupCreateInfoNV::~safe_VkRayTracingShaderGroupCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRayTracingShaderGroupCreateInfoNV::initialize(const VkRayTracingShaderGroupCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     type = in_struct->type;
     generalShader = in_struct->generalShader;
     closestHitShader = in_struct->closestHitShader;
     anyHitShader = in_struct->anyHitShader;
     intersectionShader = in_struct->intersectionShader;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkRayTracingShaderGroupCreateInfoNV::initialize(const safe_VkRayTracingShaderGroupCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     type = src->type;
     generalShader = src->generalShader;
     closestHitShader = src->closestHitShader;
     anyHitShader = src->anyHitShader;
     intersectionShader = src->intersectionShader;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkRayTracingPipelineCreateInfoNV::safe_VkRayTracingPipelineCreateInfoNV(const VkRayTracingPipelineCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     stageCount(in_struct->stageCount),
     pStages(nullptr),
@@ -20826,6 +21913,7 @@
     basePipelineHandle(in_struct->basePipelineHandle),
     basePipelineIndex(in_struct->basePipelineIndex)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (stageCount && in_struct->pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -20848,7 +21936,6 @@
 safe_VkRayTracingPipelineCreateInfoNV::safe_VkRayTracingPipelineCreateInfoNV(const safe_VkRayTracingPipelineCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stageCount = src.stageCount;
     pStages = nullptr;
@@ -20858,6 +21945,7 @@
     layout = src.layout;
     basePipelineHandle = src.basePipelineHandle;
     basePipelineIndex = src.basePipelineIndex;
+    pNext = SafePnextCopy(src.pNext);
     if (stageCount && src.pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -20880,9 +21968,10 @@
         delete[] pStages;
     if (pGroups)
         delete[] pGroups;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     stageCount = src.stageCount;
     pStages = nullptr;
@@ -20892,6 +21981,7 @@
     layout = src.layout;
     basePipelineHandle = src.basePipelineHandle;
     basePipelineIndex = src.basePipelineIndex;
+    pNext = SafePnextCopy(src.pNext);
     if (stageCount && src.pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -20914,12 +22004,13 @@
         delete[] pStages;
     if (pGroups)
         delete[] pGroups;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRayTracingPipelineCreateInfoNV::initialize(const VkRayTracingPipelineCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     stageCount = in_struct->stageCount;
     pStages = nullptr;
@@ -20929,6 +22020,7 @@
     layout = in_struct->layout;
     basePipelineHandle = in_struct->basePipelineHandle;
     basePipelineIndex = in_struct->basePipelineIndex;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (stageCount && in_struct->pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -20946,7 +22038,6 @@
 void safe_VkRayTracingPipelineCreateInfoNV::initialize(const safe_VkRayTracingPipelineCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     stageCount = src->stageCount;
     pStages = nullptr;
@@ -20956,6 +22047,7 @@
     layout = src->layout;
     basePipelineHandle = src->basePipelineHandle;
     basePipelineIndex = src->basePipelineIndex;
+    pNext = SafePnextCopy(src->pNext);
     if (stageCount && src->pStages) {
         pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];
         for (uint32_t i=0; i<stageCount; ++i) {
@@ -20972,7 +22064,6 @@
 
 safe_VkGeometryTrianglesNV::safe_VkGeometryTrianglesNV(const VkGeometryTrianglesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     vertexData(in_struct->vertexData),
     vertexOffset(in_struct->vertexOffset),
     vertexCount(in_struct->vertexCount),
@@ -20985,6 +22076,7 @@
     transformData(in_struct->transformData),
     transformOffset(in_struct->transformOffset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkGeometryTrianglesNV::safe_VkGeometryTrianglesNV()
@@ -20993,7 +22085,6 @@
 safe_VkGeometryTrianglesNV::safe_VkGeometryTrianglesNV(const safe_VkGeometryTrianglesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     vertexData = src.vertexData;
     vertexOffset = src.vertexOffset;
     vertexCount = src.vertexCount;
@@ -21005,15 +22096,17 @@
     indexType = src.indexType;
     transformData = src.transformData;
     transformOffset = src.transformOffset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkGeometryTrianglesNV& safe_VkGeometryTrianglesNV::operator=(const safe_VkGeometryTrianglesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     vertexData = src.vertexData;
     vertexOffset = src.vertexOffset;
     vertexCount = src.vertexCount;
@@ -21025,18 +22118,20 @@
     indexType = src.indexType;
     transformData = src.transformData;
     transformOffset = src.transformOffset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkGeometryTrianglesNV::~safe_VkGeometryTrianglesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkGeometryTrianglesNV::initialize(const VkGeometryTrianglesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     vertexData = in_struct->vertexData;
     vertexOffset = in_struct->vertexOffset;
     vertexCount = in_struct->vertexCount;
@@ -21048,12 +22143,12 @@
     indexType = in_struct->indexType;
     transformData = in_struct->transformData;
     transformOffset = in_struct->transformOffset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkGeometryTrianglesNV::initialize(const safe_VkGeometryTrianglesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     vertexData = src->vertexData;
     vertexOffset = src->vertexOffset;
     vertexCount = src->vertexCount;
@@ -21065,16 +22160,17 @@
     indexType = src->indexType;
     transformData = src->transformData;
     transformOffset = src->transformOffset;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkGeometryAABBNV::safe_VkGeometryAABBNV(const VkGeometryAABBNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     aabbData(in_struct->aabbData),
     numAABBs(in_struct->numAABBs),
     stride(in_struct->stride),
     offset(in_struct->offset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkGeometryAABBNV::safe_VkGeometryAABBNV()
@@ -21083,59 +22179,63 @@
 safe_VkGeometryAABBNV::safe_VkGeometryAABBNV(const safe_VkGeometryAABBNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     aabbData = src.aabbData;
     numAABBs = src.numAABBs;
     stride = src.stride;
     offset = src.offset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkGeometryAABBNV& safe_VkGeometryAABBNV::operator=(const safe_VkGeometryAABBNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     aabbData = src.aabbData;
     numAABBs = src.numAABBs;
     stride = src.stride;
     offset = src.offset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkGeometryAABBNV::~safe_VkGeometryAABBNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkGeometryAABBNV::initialize(const VkGeometryAABBNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     aabbData = in_struct->aabbData;
     numAABBs = in_struct->numAABBs;
     stride = in_struct->stride;
     offset = in_struct->offset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkGeometryAABBNV::initialize(const safe_VkGeometryAABBNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     aabbData = src->aabbData;
     numAABBs = src->numAABBs;
     stride = src->stride;
     offset = src->offset;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkGeometryNV::safe_VkGeometryNV(const VkGeometryNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     geometryType(in_struct->geometryType),
     geometry(in_struct->geometry),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkGeometryNV::safe_VkGeometryNV()
@@ -21144,57 +22244,61 @@
 safe_VkGeometryNV::safe_VkGeometryNV(const safe_VkGeometryNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     geometryType = src.geometryType;
     geometry = src.geometry;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkGeometryNV& safe_VkGeometryNV::operator=(const safe_VkGeometryNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     geometryType = src.geometryType;
     geometry = src.geometry;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkGeometryNV::~safe_VkGeometryNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkGeometryNV::initialize(const VkGeometryNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     geometryType = in_struct->geometryType;
     geometry = in_struct->geometry;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkGeometryNV::initialize(const safe_VkGeometryNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     geometryType = src->geometryType;
     geometry = src->geometry;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkAccelerationStructureInfoNV::safe_VkAccelerationStructureInfoNV(const VkAccelerationStructureInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     type(in_struct->type),
     flags(in_struct->flags),
     instanceCount(in_struct->instanceCount),
     geometryCount(in_struct->geometryCount),
     pGeometries(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (geometryCount && in_struct->pGeometries) {
         pGeometries = new safe_VkGeometryNV[geometryCount];
         for (uint32_t i=0; i<geometryCount; ++i) {
@@ -21210,12 +22314,12 @@
 safe_VkAccelerationStructureInfoNV::safe_VkAccelerationStructureInfoNV(const safe_VkAccelerationStructureInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     flags = src.flags;
     instanceCount = src.instanceCount;
     geometryCount = src.geometryCount;
     pGeometries = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (geometryCount && src.pGeometries) {
         pGeometries = new safe_VkGeometryNV[geometryCount];
         for (uint32_t i=0; i<geometryCount; ++i) {
@@ -21230,14 +22334,16 @@
 
     if (pGeometries)
         delete[] pGeometries;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     flags = src.flags;
     instanceCount = src.instanceCount;
     geometryCount = src.geometryCount;
     pGeometries = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (geometryCount && src.pGeometries) {
         pGeometries = new safe_VkGeometryNV[geometryCount];
         for (uint32_t i=0; i<geometryCount; ++i) {
@@ -21252,17 +22358,19 @@
 {
     if (pGeometries)
         delete[] pGeometries;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAccelerationStructureInfoNV::initialize(const VkAccelerationStructureInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     type = in_struct->type;
     flags = in_struct->flags;
     instanceCount = in_struct->instanceCount;
     geometryCount = in_struct->geometryCount;
     pGeometries = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (geometryCount && in_struct->pGeometries) {
         pGeometries = new safe_VkGeometryNV[geometryCount];
         for (uint32_t i=0; i<geometryCount; ++i) {
@@ -21274,12 +22382,12 @@
 void safe_VkAccelerationStructureInfoNV::initialize(const safe_VkAccelerationStructureInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     type = src->type;
     flags = src->flags;
     instanceCount = src->instanceCount;
     geometryCount = src->geometryCount;
     pGeometries = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (geometryCount && src->pGeometries) {
         pGeometries = new safe_VkGeometryNV[geometryCount];
         for (uint32_t i=0; i<geometryCount; ++i) {
@@ -21290,10 +22398,10 @@
 
 safe_VkAccelerationStructureCreateInfoNV::safe_VkAccelerationStructureCreateInfoNV(const VkAccelerationStructureCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     compactedSize(in_struct->compactedSize),
     info(&in_struct->info)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAccelerationStructureCreateInfoNV::safe_VkAccelerationStructureCreateInfoNV()
@@ -21302,53 +22410,57 @@
 safe_VkAccelerationStructureCreateInfoNV::safe_VkAccelerationStructureCreateInfoNV(const safe_VkAccelerationStructureCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     compactedSize = src.compactedSize;
     info.initialize(&src.info);
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAccelerationStructureCreateInfoNV& safe_VkAccelerationStructureCreateInfoNV::operator=(const safe_VkAccelerationStructureCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     compactedSize = src.compactedSize;
     info.initialize(&src.info);
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAccelerationStructureCreateInfoNV::~safe_VkAccelerationStructureCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAccelerationStructureCreateInfoNV::initialize(const VkAccelerationStructureCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     compactedSize = in_struct->compactedSize;
     info.initialize(&in_struct->info);
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAccelerationStructureCreateInfoNV::initialize(const safe_VkAccelerationStructureCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     compactedSize = src->compactedSize;
     info.initialize(&src->info);
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBindAccelerationStructureMemoryInfoNV::safe_VkBindAccelerationStructureMemoryInfoNV(const VkBindAccelerationStructureMemoryInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     accelerationStructure(in_struct->accelerationStructure),
     memory(in_struct->memory),
     memoryOffset(in_struct->memoryOffset),
     deviceIndexCount(in_struct->deviceIndexCount),
     pDeviceIndices(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceIndices) {
         pDeviceIndices = new uint32_t[in_struct->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)in_struct->pDeviceIndices, sizeof(uint32_t)*in_struct->deviceIndexCount);
@@ -21362,12 +22474,12 @@
 safe_VkBindAccelerationStructureMemoryInfoNV::safe_VkBindAccelerationStructureMemoryInfoNV(const safe_VkBindAccelerationStructureMemoryInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     accelerationStructure = src.accelerationStructure;
     memory = src.memory;
     memoryOffset = src.memoryOffset;
     deviceIndexCount = src.deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceIndices) {
         pDeviceIndices = new uint32_t[src.deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src.pDeviceIndices, sizeof(uint32_t)*src.deviceIndexCount);
@@ -21380,14 +22492,16 @@
 
     if (pDeviceIndices)
         delete[] pDeviceIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     accelerationStructure = src.accelerationStructure;
     memory = src.memory;
     memoryOffset = src.memoryOffset;
     deviceIndexCount = src.deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pDeviceIndices) {
         pDeviceIndices = new uint32_t[src.deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src.pDeviceIndices, sizeof(uint32_t)*src.deviceIndexCount);
@@ -21400,17 +22514,19 @@
 {
     if (pDeviceIndices)
         delete[] pDeviceIndices;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBindAccelerationStructureMemoryInfoNV::initialize(const VkBindAccelerationStructureMemoryInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     accelerationStructure = in_struct->accelerationStructure;
     memory = in_struct->memory;
     memoryOffset = in_struct->memoryOffset;
     deviceIndexCount = in_struct->deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pDeviceIndices) {
         pDeviceIndices = new uint32_t[in_struct->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)in_struct->pDeviceIndices, sizeof(uint32_t)*in_struct->deviceIndexCount);
@@ -21420,12 +22536,12 @@
 void safe_VkBindAccelerationStructureMemoryInfoNV::initialize(const safe_VkBindAccelerationStructureMemoryInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     accelerationStructure = src->accelerationStructure;
     memory = src->memory;
     memoryOffset = src->memoryOffset;
     deviceIndexCount = src->deviceIndexCount;
     pDeviceIndices = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pDeviceIndices) {
         pDeviceIndices = new uint32_t[src->deviceIndexCount];
         memcpy ((void *)pDeviceIndices, (void *)src->pDeviceIndices, sizeof(uint32_t)*src->deviceIndexCount);
@@ -21434,10 +22550,10 @@
 
 safe_VkWriteDescriptorSetAccelerationStructureNV::safe_VkWriteDescriptorSetAccelerationStructureNV(const VkWriteDescriptorSetAccelerationStructureNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     accelerationStructureCount(in_struct->accelerationStructureCount),
     pAccelerationStructures(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (accelerationStructureCount && in_struct->pAccelerationStructures) {
         pAccelerationStructures = new VkAccelerationStructureNV[accelerationStructureCount];
         for (uint32_t i=0; i<accelerationStructureCount; ++i) {
@@ -21453,9 +22569,9 @@
 safe_VkWriteDescriptorSetAccelerationStructureNV::safe_VkWriteDescriptorSetAccelerationStructureNV(const safe_VkWriteDescriptorSetAccelerationStructureNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     accelerationStructureCount = src.accelerationStructureCount;
     pAccelerationStructures = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (accelerationStructureCount && src.pAccelerationStructures) {
         pAccelerationStructures = new VkAccelerationStructureNV[accelerationStructureCount];
         for (uint32_t i=0; i<accelerationStructureCount; ++i) {
@@ -21470,11 +22586,13 @@
 
     if (pAccelerationStructures)
         delete[] pAccelerationStructures;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     accelerationStructureCount = src.accelerationStructureCount;
     pAccelerationStructures = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (accelerationStructureCount && src.pAccelerationStructures) {
         pAccelerationStructures = new VkAccelerationStructureNV[accelerationStructureCount];
         for (uint32_t i=0; i<accelerationStructureCount; ++i) {
@@ -21489,14 +22607,16 @@
 {
     if (pAccelerationStructures)
         delete[] pAccelerationStructures;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkWriteDescriptorSetAccelerationStructureNV::initialize(const VkWriteDescriptorSetAccelerationStructureNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     accelerationStructureCount = in_struct->accelerationStructureCount;
     pAccelerationStructures = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (accelerationStructureCount && in_struct->pAccelerationStructures) {
         pAccelerationStructures = new VkAccelerationStructureNV[accelerationStructureCount];
         for (uint32_t i=0; i<accelerationStructureCount; ++i) {
@@ -21508,9 +22628,9 @@
 void safe_VkWriteDescriptorSetAccelerationStructureNV::initialize(const safe_VkWriteDescriptorSetAccelerationStructureNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     accelerationStructureCount = src->accelerationStructureCount;
     pAccelerationStructures = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (accelerationStructureCount && src->pAccelerationStructures) {
         pAccelerationStructures = new VkAccelerationStructureNV[accelerationStructureCount];
         for (uint32_t i=0; i<accelerationStructureCount; ++i) {
@@ -21521,10 +22641,10 @@
 
 safe_VkAccelerationStructureMemoryRequirementsInfoNV::safe_VkAccelerationStructureMemoryRequirementsInfoNV(const VkAccelerationStructureMemoryRequirementsInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     type(in_struct->type),
     accelerationStructure(in_struct->accelerationStructure)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkAccelerationStructureMemoryRequirementsInfoNV::safe_VkAccelerationStructureMemoryRequirementsInfoNV()
@@ -21533,47 +22653,50 @@
 safe_VkAccelerationStructureMemoryRequirementsInfoNV::safe_VkAccelerationStructureMemoryRequirementsInfoNV(const safe_VkAccelerationStructureMemoryRequirementsInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     accelerationStructure = src.accelerationStructure;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkAccelerationStructureMemoryRequirementsInfoNV& safe_VkAccelerationStructureMemoryRequirementsInfoNV::operator=(const safe_VkAccelerationStructureMemoryRequirementsInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     accelerationStructure = src.accelerationStructure;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkAccelerationStructureMemoryRequirementsInfoNV::~safe_VkAccelerationStructureMemoryRequirementsInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkAccelerationStructureMemoryRequirementsInfoNV::initialize(const VkAccelerationStructureMemoryRequirementsInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     type = in_struct->type;
     accelerationStructure = in_struct->accelerationStructure;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkAccelerationStructureMemoryRequirementsInfoNV::initialize(const safe_VkAccelerationStructureMemoryRequirementsInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     type = src->type;
     accelerationStructure = src->accelerationStructure;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceRayTracingPropertiesNV::safe_VkPhysicalDeviceRayTracingPropertiesNV(const VkPhysicalDeviceRayTracingPropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderGroupHandleSize(in_struct->shaderGroupHandleSize),
     maxRecursionDepth(in_struct->maxRecursionDepth),
     maxShaderGroupStride(in_struct->maxShaderGroupStride),
@@ -21583,6 +22706,7 @@
     maxTriangleCount(in_struct->maxTriangleCount),
     maxDescriptorSetAccelerationStructures(in_struct->maxDescriptorSetAccelerationStructures)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceRayTracingPropertiesNV::safe_VkPhysicalDeviceRayTracingPropertiesNV()
@@ -21591,7 +22715,6 @@
 safe_VkPhysicalDeviceRayTracingPropertiesNV::safe_VkPhysicalDeviceRayTracingPropertiesNV(const safe_VkPhysicalDeviceRayTracingPropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderGroupHandleSize = src.shaderGroupHandleSize;
     maxRecursionDepth = src.maxRecursionDepth;
     maxShaderGroupStride = src.maxShaderGroupStride;
@@ -21600,15 +22723,17 @@
     maxInstanceCount = src.maxInstanceCount;
     maxTriangleCount = src.maxTriangleCount;
     maxDescriptorSetAccelerationStructures = src.maxDescriptorSetAccelerationStructures;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceRayTracingPropertiesNV& safe_VkPhysicalDeviceRayTracingPropertiesNV::operator=(const safe_VkPhysicalDeviceRayTracingPropertiesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderGroupHandleSize = src.shaderGroupHandleSize;
     maxRecursionDepth = src.maxRecursionDepth;
     maxShaderGroupStride = src.maxShaderGroupStride;
@@ -21617,18 +22742,20 @@
     maxInstanceCount = src.maxInstanceCount;
     maxTriangleCount = src.maxTriangleCount;
     maxDescriptorSetAccelerationStructures = src.maxDescriptorSetAccelerationStructures;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceRayTracingPropertiesNV::~safe_VkPhysicalDeviceRayTracingPropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceRayTracingPropertiesNV::initialize(const VkPhysicalDeviceRayTracingPropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderGroupHandleSize = in_struct->shaderGroupHandleSize;
     maxRecursionDepth = in_struct->maxRecursionDepth;
     maxShaderGroupStride = in_struct->maxShaderGroupStride;
@@ -21637,12 +22764,12 @@
     maxInstanceCount = in_struct->maxInstanceCount;
     maxTriangleCount = in_struct->maxTriangleCount;
     maxDescriptorSetAccelerationStructures = in_struct->maxDescriptorSetAccelerationStructures;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceRayTracingPropertiesNV::initialize(const safe_VkPhysicalDeviceRayTracingPropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderGroupHandleSize = src->shaderGroupHandleSize;
     maxRecursionDepth = src->maxRecursionDepth;
     maxShaderGroupStride = src->maxShaderGroupStride;
@@ -21651,13 +22778,14 @@
     maxInstanceCount = src->maxInstanceCount;
     maxTriangleCount = src->maxTriangleCount;
     maxDescriptorSetAccelerationStructures = src->maxDescriptorSetAccelerationStructures;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     representativeFragmentTest(in_struct->representativeFragmentTest)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV()
@@ -21666,45 +22794,49 @@
 safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV(const safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     representativeFragmentTest = src.representativeFragmentTest;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::operator=(const safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     representativeFragmentTest = src.representativeFragmentTest;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::~safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::initialize(const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     representativeFragmentTest = in_struct->representativeFragmentTest;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV::initialize(const safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     representativeFragmentTest = src->representativeFragmentTest;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     representativeFragmentTestEnable(in_struct->representativeFragmentTestEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV()
@@ -21713,45 +22845,49 @@
 safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV(const safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     representativeFragmentTestEnable = src.representativeFragmentTestEnable;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV& safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::operator=(const safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     representativeFragmentTestEnable = src.representativeFragmentTestEnable;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::~safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::initialize(const VkPipelineRepresentativeFragmentTestStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     representativeFragmentTestEnable = in_struct->representativeFragmentTestEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV::initialize(const safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     representativeFragmentTestEnable = src->representativeFragmentTestEnable;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::safe_VkPhysicalDeviceImageViewImageFormatInfoEXT(const VkPhysicalDeviceImageViewImageFormatInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     imageViewType(in_struct->imageViewType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::safe_VkPhysicalDeviceImageViewImageFormatInfoEXT()
@@ -21760,46 +22896,50 @@
 safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::safe_VkPhysicalDeviceImageViewImageFormatInfoEXT(const safe_VkPhysicalDeviceImageViewImageFormatInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     imageViewType = src.imageViewType;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceImageViewImageFormatInfoEXT& safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::operator=(const safe_VkPhysicalDeviceImageViewImageFormatInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     imageViewType = src.imageViewType;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::~safe_VkPhysicalDeviceImageViewImageFormatInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::initialize(const VkPhysicalDeviceImageViewImageFormatInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     imageViewType = in_struct->imageViewType;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceImageViewImageFormatInfoEXT::initialize(const safe_VkPhysicalDeviceImageViewImageFormatInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     imageViewType = src->imageViewType;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkFilterCubicImageViewImageFormatPropertiesEXT::safe_VkFilterCubicImageViewImageFormatPropertiesEXT(const VkFilterCubicImageViewImageFormatPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     filterCubic(in_struct->filterCubic),
     filterCubicMinmax(in_struct->filterCubicMinmax)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkFilterCubicImageViewImageFormatPropertiesEXT::safe_VkFilterCubicImageViewImageFormatPropertiesEXT()
@@ -21808,49 +22948,53 @@
 safe_VkFilterCubicImageViewImageFormatPropertiesEXT::safe_VkFilterCubicImageViewImageFormatPropertiesEXT(const safe_VkFilterCubicImageViewImageFormatPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     filterCubic = src.filterCubic;
     filterCubicMinmax = src.filterCubicMinmax;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkFilterCubicImageViewImageFormatPropertiesEXT& safe_VkFilterCubicImageViewImageFormatPropertiesEXT::operator=(const safe_VkFilterCubicImageViewImageFormatPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     filterCubic = src.filterCubic;
     filterCubicMinmax = src.filterCubicMinmax;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkFilterCubicImageViewImageFormatPropertiesEXT::~safe_VkFilterCubicImageViewImageFormatPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFilterCubicImageViewImageFormatPropertiesEXT::initialize(const VkFilterCubicImageViewImageFormatPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     filterCubic = in_struct->filterCubic;
     filterCubicMinmax = in_struct->filterCubicMinmax;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkFilterCubicImageViewImageFormatPropertiesEXT::initialize(const safe_VkFilterCubicImageViewImageFormatPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     filterCubic = src->filterCubic;
     filterCubicMinmax = src->filterCubicMinmax;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::safe_VkDeviceQueueGlobalPriorityCreateInfoEXT(const VkDeviceQueueGlobalPriorityCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     globalPriority(in_struct->globalPriority)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::safe_VkDeviceQueueGlobalPriorityCreateInfoEXT()
@@ -21859,46 +23003,50 @@
 safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::safe_VkDeviceQueueGlobalPriorityCreateInfoEXT(const safe_VkDeviceQueueGlobalPriorityCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     globalPriority = src.globalPriority;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceQueueGlobalPriorityCreateInfoEXT& safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::operator=(const safe_VkDeviceQueueGlobalPriorityCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     globalPriority = src.globalPriority;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::~safe_VkDeviceQueueGlobalPriorityCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::initialize(const VkDeviceQueueGlobalPriorityCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     globalPriority = in_struct->globalPriority;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceQueueGlobalPriorityCreateInfoEXT::initialize(const safe_VkDeviceQueueGlobalPriorityCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     globalPriority = src->globalPriority;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImportMemoryHostPointerInfoEXT::safe_VkImportMemoryHostPointerInfoEXT(const VkImportMemoryHostPointerInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     handleType(in_struct->handleType),
     pHostPointer(in_struct->pHostPointer)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImportMemoryHostPointerInfoEXT::safe_VkImportMemoryHostPointerInfoEXT()
@@ -21907,49 +23055,53 @@
 safe_VkImportMemoryHostPointerInfoEXT::safe_VkImportMemoryHostPointerInfoEXT(const safe_VkImportMemoryHostPointerInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     pHostPointer = src.pHostPointer;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImportMemoryHostPointerInfoEXT& safe_VkImportMemoryHostPointerInfoEXT::operator=(const safe_VkImportMemoryHostPointerInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     handleType = src.handleType;
     pHostPointer = src.pHostPointer;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImportMemoryHostPointerInfoEXT::~safe_VkImportMemoryHostPointerInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImportMemoryHostPointerInfoEXT::initialize(const VkImportMemoryHostPointerInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     handleType = in_struct->handleType;
     pHostPointer = in_struct->pHostPointer;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImportMemoryHostPointerInfoEXT::initialize(const safe_VkImportMemoryHostPointerInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     handleType = src->handleType;
     pHostPointer = src->pHostPointer;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryHostPointerPropertiesEXT::safe_VkMemoryHostPointerPropertiesEXT(const VkMemoryHostPointerPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryTypeBits(in_struct->memoryTypeBits)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryHostPointerPropertiesEXT::safe_VkMemoryHostPointerPropertiesEXT()
@@ -21958,45 +23110,49 @@
 safe_VkMemoryHostPointerPropertiesEXT::safe_VkMemoryHostPointerPropertiesEXT(const safe_VkMemoryHostPointerPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryHostPointerPropertiesEXT& safe_VkMemoryHostPointerPropertiesEXT::operator=(const safe_VkMemoryHostPointerPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryTypeBits = src.memoryTypeBits;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryHostPointerPropertiesEXT::~safe_VkMemoryHostPointerPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryHostPointerPropertiesEXT::initialize(const VkMemoryHostPointerPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryTypeBits = in_struct->memoryTypeBits;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryHostPointerPropertiesEXT::initialize(const safe_VkMemoryHostPointerPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryTypeBits = src->memoryTypeBits;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     minImportedHostPointerAlignment(in_struct->minImportedHostPointerAlignment)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT()
@@ -22005,45 +23161,49 @@
 safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(const safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     minImportedHostPointerAlignment = src.minImportedHostPointerAlignment;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT& safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::operator=(const safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     minImportedHostPointerAlignment = src.minImportedHostPointerAlignment;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::~safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::initialize(const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     minImportedHostPointerAlignment = in_struct->minImportedHostPointerAlignment;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT::initialize(const safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     minImportedHostPointerAlignment = src->minImportedHostPointerAlignment;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCalibratedTimestampInfoEXT::safe_VkCalibratedTimestampInfoEXT(const VkCalibratedTimestampInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     timeDomain(in_struct->timeDomain)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCalibratedTimestampInfoEXT::safe_VkCalibratedTimestampInfoEXT()
@@ -22052,43 +23212,46 @@
 safe_VkCalibratedTimestampInfoEXT::safe_VkCalibratedTimestampInfoEXT(const safe_VkCalibratedTimestampInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     timeDomain = src.timeDomain;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCalibratedTimestampInfoEXT& safe_VkCalibratedTimestampInfoEXT::operator=(const safe_VkCalibratedTimestampInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     timeDomain = src.timeDomain;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCalibratedTimestampInfoEXT::~safe_VkCalibratedTimestampInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCalibratedTimestampInfoEXT::initialize(const VkCalibratedTimestampInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     timeDomain = in_struct->timeDomain;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCalibratedTimestampInfoEXT::initialize(const safe_VkCalibratedTimestampInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     timeDomain = src->timeDomain;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderCorePropertiesAMD::safe_VkPhysicalDeviceShaderCorePropertiesAMD(const VkPhysicalDeviceShaderCorePropertiesAMD* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderEngineCount(in_struct->shaderEngineCount),
     shaderArraysPerEngineCount(in_struct->shaderArraysPerEngineCount),
     computeUnitsPerShaderArray(in_struct->computeUnitsPerShaderArray),
@@ -22104,6 +23267,7 @@
     maxVgprAllocation(in_struct->maxVgprAllocation),
     vgprAllocationGranularity(in_struct->vgprAllocationGranularity)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderCorePropertiesAMD::safe_VkPhysicalDeviceShaderCorePropertiesAMD()
@@ -22112,7 +23276,6 @@
 safe_VkPhysicalDeviceShaderCorePropertiesAMD::safe_VkPhysicalDeviceShaderCorePropertiesAMD(const safe_VkPhysicalDeviceShaderCorePropertiesAMD& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderEngineCount = src.shaderEngineCount;
     shaderArraysPerEngineCount = src.shaderArraysPerEngineCount;
     computeUnitsPerShaderArray = src.computeUnitsPerShaderArray;
@@ -22127,15 +23290,17 @@
     minVgprAllocation = src.minVgprAllocation;
     maxVgprAllocation = src.maxVgprAllocation;
     vgprAllocationGranularity = src.vgprAllocationGranularity;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderCorePropertiesAMD& safe_VkPhysicalDeviceShaderCorePropertiesAMD::operator=(const safe_VkPhysicalDeviceShaderCorePropertiesAMD& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderEngineCount = src.shaderEngineCount;
     shaderArraysPerEngineCount = src.shaderArraysPerEngineCount;
     computeUnitsPerShaderArray = src.computeUnitsPerShaderArray;
@@ -22150,18 +23315,20 @@
     minVgprAllocation = src.minVgprAllocation;
     maxVgprAllocation = src.maxVgprAllocation;
     vgprAllocationGranularity = src.vgprAllocationGranularity;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderCorePropertiesAMD::~safe_VkPhysicalDeviceShaderCorePropertiesAMD()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderCorePropertiesAMD::initialize(const VkPhysicalDeviceShaderCorePropertiesAMD* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderEngineCount = in_struct->shaderEngineCount;
     shaderArraysPerEngineCount = in_struct->shaderArraysPerEngineCount;
     computeUnitsPerShaderArray = in_struct->computeUnitsPerShaderArray;
@@ -22176,12 +23343,12 @@
     minVgprAllocation = in_struct->minVgprAllocation;
     maxVgprAllocation = in_struct->maxVgprAllocation;
     vgprAllocationGranularity = in_struct->vgprAllocationGranularity;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderCorePropertiesAMD::initialize(const safe_VkPhysicalDeviceShaderCorePropertiesAMD* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderEngineCount = src->shaderEngineCount;
     shaderArraysPerEngineCount = src->shaderArraysPerEngineCount;
     computeUnitsPerShaderArray = src->computeUnitsPerShaderArray;
@@ -22196,13 +23363,14 @@
     minVgprAllocation = src->minVgprAllocation;
     maxVgprAllocation = src->maxVgprAllocation;
     vgprAllocationGranularity = src->vgprAllocationGranularity;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDeviceMemoryOverallocationCreateInfoAMD::safe_VkDeviceMemoryOverallocationCreateInfoAMD(const VkDeviceMemoryOverallocationCreateInfoAMD* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     overallocationBehavior(in_struct->overallocationBehavior)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDeviceMemoryOverallocationCreateInfoAMD::safe_VkDeviceMemoryOverallocationCreateInfoAMD()
@@ -22211,45 +23379,49 @@
 safe_VkDeviceMemoryOverallocationCreateInfoAMD::safe_VkDeviceMemoryOverallocationCreateInfoAMD(const safe_VkDeviceMemoryOverallocationCreateInfoAMD& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     overallocationBehavior = src.overallocationBehavior;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDeviceMemoryOverallocationCreateInfoAMD& safe_VkDeviceMemoryOverallocationCreateInfoAMD::operator=(const safe_VkDeviceMemoryOverallocationCreateInfoAMD& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     overallocationBehavior = src.overallocationBehavior;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDeviceMemoryOverallocationCreateInfoAMD::~safe_VkDeviceMemoryOverallocationCreateInfoAMD()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDeviceMemoryOverallocationCreateInfoAMD::initialize(const VkDeviceMemoryOverallocationCreateInfoAMD* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     overallocationBehavior = in_struct->overallocationBehavior;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDeviceMemoryOverallocationCreateInfoAMD::initialize(const safe_VkDeviceMemoryOverallocationCreateInfoAMD* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     overallocationBehavior = src->overallocationBehavior;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxVertexAttribDivisor(in_struct->maxVertexAttribDivisor)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT()
@@ -22258,46 +23430,50 @@
 safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(const safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxVertexAttribDivisor = src.maxVertexAttribDivisor;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::operator=(const safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxVertexAttribDivisor = src.maxVertexAttribDivisor;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::~safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::initialize(const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxVertexAttribDivisor = in_struct->maxVertexAttribDivisor;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT::initialize(const safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxVertexAttribDivisor = src->maxVertexAttribDivisor;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineVertexInputDivisorStateCreateInfoEXT::safe_VkPipelineVertexInputDivisorStateCreateInfoEXT(const VkPipelineVertexInputDivisorStateCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     vertexBindingDivisorCount(in_struct->vertexBindingDivisorCount),
     pVertexBindingDivisors(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pVertexBindingDivisors) {
         pVertexBindingDivisors = new VkVertexInputBindingDivisorDescriptionEXT[in_struct->vertexBindingDivisorCount];
         memcpy ((void *)pVertexBindingDivisors, (void *)in_struct->pVertexBindingDivisors, sizeof(VkVertexInputBindingDivisorDescriptionEXT)*in_struct->vertexBindingDivisorCount);
@@ -22311,9 +23487,9 @@
 safe_VkPipelineVertexInputDivisorStateCreateInfoEXT::safe_VkPipelineVertexInputDivisorStateCreateInfoEXT(const safe_VkPipelineVertexInputDivisorStateCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     vertexBindingDivisorCount = src.vertexBindingDivisorCount;
     pVertexBindingDivisors = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pVertexBindingDivisors) {
         pVertexBindingDivisors = new VkVertexInputBindingDivisorDescriptionEXT[src.vertexBindingDivisorCount];
         memcpy ((void *)pVertexBindingDivisors, (void *)src.pVertexBindingDivisors, sizeof(VkVertexInputBindingDivisorDescriptionEXT)*src.vertexBindingDivisorCount);
@@ -22326,11 +23502,13 @@
 
     if (pVertexBindingDivisors)
         delete[] pVertexBindingDivisors;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     vertexBindingDivisorCount = src.vertexBindingDivisorCount;
     pVertexBindingDivisors = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pVertexBindingDivisors) {
         pVertexBindingDivisors = new VkVertexInputBindingDivisorDescriptionEXT[src.vertexBindingDivisorCount];
         memcpy ((void *)pVertexBindingDivisors, (void *)src.pVertexBindingDivisors, sizeof(VkVertexInputBindingDivisorDescriptionEXT)*src.vertexBindingDivisorCount);
@@ -22343,14 +23521,16 @@
 {
     if (pVertexBindingDivisors)
         delete[] pVertexBindingDivisors;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineVertexInputDivisorStateCreateInfoEXT::initialize(const VkPipelineVertexInputDivisorStateCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     vertexBindingDivisorCount = in_struct->vertexBindingDivisorCount;
     pVertexBindingDivisors = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pVertexBindingDivisors) {
         pVertexBindingDivisors = new VkVertexInputBindingDivisorDescriptionEXT[in_struct->vertexBindingDivisorCount];
         memcpy ((void *)pVertexBindingDivisors, (void *)in_struct->pVertexBindingDivisors, sizeof(VkVertexInputBindingDivisorDescriptionEXT)*in_struct->vertexBindingDivisorCount);
@@ -22360,9 +23540,9 @@
 void safe_VkPipelineVertexInputDivisorStateCreateInfoEXT::initialize(const safe_VkPipelineVertexInputDivisorStateCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     vertexBindingDivisorCount = src->vertexBindingDivisorCount;
     pVertexBindingDivisors = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pVertexBindingDivisors) {
         pVertexBindingDivisors = new VkVertexInputBindingDivisorDescriptionEXT[src->vertexBindingDivisorCount];
         memcpy ((void *)pVertexBindingDivisors, (void *)src->pVertexBindingDivisors, sizeof(VkVertexInputBindingDivisorDescriptionEXT)*src->vertexBindingDivisorCount);
@@ -22371,10 +23551,10 @@
 
 safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     vertexAttributeInstanceRateDivisor(in_struct->vertexAttributeInstanceRateDivisor),
     vertexAttributeInstanceRateZeroDivisor(in_struct->vertexAttributeInstanceRateZeroDivisor)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT()
@@ -22383,51 +23563,55 @@
 safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT(const safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     vertexAttributeInstanceRateDivisor = src.vertexAttributeInstanceRateDivisor;
     vertexAttributeInstanceRateZeroDivisor = src.vertexAttributeInstanceRateZeroDivisor;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::operator=(const safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     vertexAttributeInstanceRateDivisor = src.vertexAttributeInstanceRateDivisor;
     vertexAttributeInstanceRateZeroDivisor = src.vertexAttributeInstanceRateZeroDivisor;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::~safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::initialize(const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     vertexAttributeInstanceRateDivisor = in_struct->vertexAttributeInstanceRateDivisor;
     vertexAttributeInstanceRateZeroDivisor = in_struct->vertexAttributeInstanceRateZeroDivisor;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT::initialize(const safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     vertexAttributeInstanceRateDivisor = src->vertexAttributeInstanceRateDivisor;
     vertexAttributeInstanceRateZeroDivisor = src->vertexAttributeInstanceRateZeroDivisor;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_GGP
 
 
 safe_VkPresentFrameTokenGGP::safe_VkPresentFrameTokenGGP(const VkPresentFrameTokenGGP* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     frameToken(in_struct->frameToken)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPresentFrameTokenGGP::safe_VkPresentFrameTokenGGP()
@@ -22436,49 +23620,53 @@
 safe_VkPresentFrameTokenGGP::safe_VkPresentFrameTokenGGP(const safe_VkPresentFrameTokenGGP& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     frameToken = src.frameToken;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPresentFrameTokenGGP& safe_VkPresentFrameTokenGGP::operator=(const safe_VkPresentFrameTokenGGP& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     frameToken = src.frameToken;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPresentFrameTokenGGP::~safe_VkPresentFrameTokenGGP()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPresentFrameTokenGGP::initialize(const VkPresentFrameTokenGGP* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     frameToken = in_struct->frameToken;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPresentFrameTokenGGP::initialize(const safe_VkPresentFrameTokenGGP* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     frameToken = src->frameToken;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_GGP
 
 
 safe_VkPipelineCreationFeedbackCreateInfoEXT::safe_VkPipelineCreationFeedbackCreateInfoEXT(const VkPipelineCreationFeedbackCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pPipelineCreationFeedback(nullptr),
     pipelineStageCreationFeedbackCount(in_struct->pipelineStageCreationFeedbackCount),
     pPipelineStageCreationFeedbacks(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPipelineCreationFeedback) {
         pPipelineCreationFeedback = new VkPipelineCreationFeedbackEXT(*in_struct->pPipelineCreationFeedback);
     }
@@ -22496,10 +23684,10 @@
 safe_VkPipelineCreationFeedbackCreateInfoEXT::safe_VkPipelineCreationFeedbackCreateInfoEXT(const safe_VkPipelineCreationFeedbackCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pPipelineCreationFeedback = nullptr;
     pipelineStageCreationFeedbackCount = src.pipelineStageCreationFeedbackCount;
     pPipelineStageCreationFeedbacks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPipelineCreationFeedback) {
         pPipelineCreationFeedback = new VkPipelineCreationFeedbackEXT(*src.pPipelineCreationFeedback);
     }
@@ -22517,12 +23705,14 @@
         delete pPipelineCreationFeedback;
     if (pPipelineStageCreationFeedbacks)
         delete[] pPipelineStageCreationFeedbacks;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pPipelineCreationFeedback = nullptr;
     pipelineStageCreationFeedbackCount = src.pipelineStageCreationFeedbackCount;
     pPipelineStageCreationFeedbacks = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pPipelineCreationFeedback) {
         pPipelineCreationFeedback = new VkPipelineCreationFeedbackEXT(*src.pPipelineCreationFeedback);
     }
@@ -22540,15 +23730,17 @@
         delete pPipelineCreationFeedback;
     if (pPipelineStageCreationFeedbacks)
         delete[] pPipelineStageCreationFeedbacks;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineCreationFeedbackCreateInfoEXT::initialize(const VkPipelineCreationFeedbackCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pPipelineCreationFeedback = nullptr;
     pipelineStageCreationFeedbackCount = in_struct->pipelineStageCreationFeedbackCount;
     pPipelineStageCreationFeedbacks = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pPipelineCreationFeedback) {
         pPipelineCreationFeedback = new VkPipelineCreationFeedbackEXT(*in_struct->pPipelineCreationFeedback);
     }
@@ -22561,10 +23753,10 @@
 void safe_VkPipelineCreationFeedbackCreateInfoEXT::initialize(const safe_VkPipelineCreationFeedbackCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pPipelineCreationFeedback = nullptr;
     pipelineStageCreationFeedbackCount = src->pipelineStageCreationFeedbackCount;
     pPipelineStageCreationFeedbacks = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pPipelineCreationFeedback) {
         pPipelineCreationFeedback = new VkPipelineCreationFeedbackEXT(*src->pPipelineCreationFeedback);
     }
@@ -22576,10 +23768,10 @@
 
 safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     computeDerivativeGroupQuads(in_struct->computeDerivativeGroupQuads),
     computeDerivativeGroupLinear(in_struct->computeDerivativeGroupLinear)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV()
@@ -22588,50 +23780,54 @@
 safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV(const safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     computeDerivativeGroupQuads = src.computeDerivativeGroupQuads;
     computeDerivativeGroupLinear = src.computeDerivativeGroupLinear;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::operator=(const safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     computeDerivativeGroupQuads = src.computeDerivativeGroupQuads;
     computeDerivativeGroupLinear = src.computeDerivativeGroupLinear;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::~safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::initialize(const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     computeDerivativeGroupQuads = in_struct->computeDerivativeGroupQuads;
     computeDerivativeGroupLinear = in_struct->computeDerivativeGroupLinear;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV::initialize(const safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     computeDerivativeGroupQuads = src->computeDerivativeGroupQuads;
     computeDerivativeGroupLinear = src->computeDerivativeGroupLinear;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceMeshShaderFeaturesNV::safe_VkPhysicalDeviceMeshShaderFeaturesNV(const VkPhysicalDeviceMeshShaderFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     taskShader(in_struct->taskShader),
     meshShader(in_struct->meshShader)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMeshShaderFeaturesNV::safe_VkPhysicalDeviceMeshShaderFeaturesNV()
@@ -22640,47 +23836,50 @@
 safe_VkPhysicalDeviceMeshShaderFeaturesNV::safe_VkPhysicalDeviceMeshShaderFeaturesNV(const safe_VkPhysicalDeviceMeshShaderFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     taskShader = src.taskShader;
     meshShader = src.meshShader;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMeshShaderFeaturesNV& safe_VkPhysicalDeviceMeshShaderFeaturesNV::operator=(const safe_VkPhysicalDeviceMeshShaderFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     taskShader = src.taskShader;
     meshShader = src.meshShader;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMeshShaderFeaturesNV::~safe_VkPhysicalDeviceMeshShaderFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMeshShaderFeaturesNV::initialize(const VkPhysicalDeviceMeshShaderFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     taskShader = in_struct->taskShader;
     meshShader = in_struct->meshShader;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMeshShaderFeaturesNV::initialize(const safe_VkPhysicalDeviceMeshShaderFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     taskShader = src->taskShader;
     meshShader = src->meshShader;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceMeshShaderPropertiesNV::safe_VkPhysicalDeviceMeshShaderPropertiesNV(const VkPhysicalDeviceMeshShaderPropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     maxDrawMeshTasksCount(in_struct->maxDrawMeshTasksCount),
     maxTaskWorkGroupInvocations(in_struct->maxTaskWorkGroupInvocations),
     maxTaskTotalMemorySize(in_struct->maxTaskTotalMemorySize),
@@ -22693,6 +23892,7 @@
     meshOutputPerVertexGranularity(in_struct->meshOutputPerVertexGranularity),
     meshOutputPerPrimitiveGranularity(in_struct->meshOutputPerPrimitiveGranularity)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<3; ++i) {
         maxTaskWorkGroupSize[i] = in_struct->maxTaskWorkGroupSize[i];
     }
@@ -22707,7 +23907,6 @@
 safe_VkPhysicalDeviceMeshShaderPropertiesNV::safe_VkPhysicalDeviceMeshShaderPropertiesNV(const safe_VkPhysicalDeviceMeshShaderPropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     maxDrawMeshTasksCount = src.maxDrawMeshTasksCount;
     maxTaskWorkGroupInvocations = src.maxTaskWorkGroupInvocations;
     maxTaskTotalMemorySize = src.maxTaskTotalMemorySize;
@@ -22719,6 +23918,7 @@
     maxMeshMultiviewViewCount = src.maxMeshMultiviewViewCount;
     meshOutputPerVertexGranularity = src.meshOutputPerVertexGranularity;
     meshOutputPerPrimitiveGranularity = src.meshOutputPerPrimitiveGranularity;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<3; ++i) {
         maxTaskWorkGroupSize[i] = src.maxTaskWorkGroupSize[i];
     }
@@ -22731,9 +23931,10 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     maxDrawMeshTasksCount = src.maxDrawMeshTasksCount;
     maxTaskWorkGroupInvocations = src.maxTaskWorkGroupInvocations;
     maxTaskTotalMemorySize = src.maxTaskTotalMemorySize;
@@ -22745,6 +23946,7 @@
     maxMeshMultiviewViewCount = src.maxMeshMultiviewViewCount;
     meshOutputPerVertexGranularity = src.meshOutputPerVertexGranularity;
     meshOutputPerPrimitiveGranularity = src.meshOutputPerPrimitiveGranularity;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<3; ++i) {
         maxTaskWorkGroupSize[i] = src.maxTaskWorkGroupSize[i];
     }
@@ -22757,12 +23959,13 @@
 
 safe_VkPhysicalDeviceMeshShaderPropertiesNV::~safe_VkPhysicalDeviceMeshShaderPropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMeshShaderPropertiesNV::initialize(const VkPhysicalDeviceMeshShaderPropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     maxDrawMeshTasksCount = in_struct->maxDrawMeshTasksCount;
     maxTaskWorkGroupInvocations = in_struct->maxTaskWorkGroupInvocations;
     maxTaskTotalMemorySize = in_struct->maxTaskTotalMemorySize;
@@ -22774,6 +23977,7 @@
     maxMeshMultiviewViewCount = in_struct->maxMeshMultiviewViewCount;
     meshOutputPerVertexGranularity = in_struct->meshOutputPerVertexGranularity;
     meshOutputPerPrimitiveGranularity = in_struct->meshOutputPerPrimitiveGranularity;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<3; ++i) {
         maxTaskWorkGroupSize[i] = in_struct->maxTaskWorkGroupSize[i];
     }
@@ -22785,7 +23989,6 @@
 void safe_VkPhysicalDeviceMeshShaderPropertiesNV::initialize(const safe_VkPhysicalDeviceMeshShaderPropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     maxDrawMeshTasksCount = src->maxDrawMeshTasksCount;
     maxTaskWorkGroupInvocations = src->maxTaskWorkGroupInvocations;
     maxTaskTotalMemorySize = src->maxTaskTotalMemorySize;
@@ -22797,6 +24000,7 @@
     maxMeshMultiviewViewCount = src->maxMeshMultiviewViewCount;
     meshOutputPerVertexGranularity = src->meshOutputPerVertexGranularity;
     meshOutputPerPrimitiveGranularity = src->meshOutputPerPrimitiveGranularity;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<3; ++i) {
         maxTaskWorkGroupSize[i] = src->maxTaskWorkGroupSize[i];
     }
@@ -22807,9 +24011,9 @@
 
 safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fragmentShaderBarycentric(in_struct->fragmentShaderBarycentric)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV()
@@ -22818,45 +24022,49 @@
 safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV(const safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fragmentShaderBarycentric = src.fragmentShaderBarycentric;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::operator=(const safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fragmentShaderBarycentric = src.fragmentShaderBarycentric;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::~safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::initialize(const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fragmentShaderBarycentric = in_struct->fragmentShaderBarycentric;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV::initialize(const safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fragmentShaderBarycentric = src->fragmentShaderBarycentric;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV(const VkPhysicalDeviceShaderImageFootprintFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     imageFootprint(in_struct->imageFootprint)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV()
@@ -22865,46 +24073,50 @@
 safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV(const safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     imageFootprint = src.imageFootprint;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV& safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::operator=(const safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     imageFootprint = src.imageFootprint;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::~safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::initialize(const VkPhysicalDeviceShaderImageFootprintFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     imageFootprint = in_struct->imageFootprint;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV::initialize(const safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     imageFootprint = src->imageFootprint;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV::safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV(const VkPipelineViewportExclusiveScissorStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     exclusiveScissorCount(in_struct->exclusiveScissorCount),
     pExclusiveScissors(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pExclusiveScissors) {
         pExclusiveScissors = new VkRect2D[in_struct->exclusiveScissorCount];
         memcpy ((void *)pExclusiveScissors, (void *)in_struct->pExclusiveScissors, sizeof(VkRect2D)*in_struct->exclusiveScissorCount);
@@ -22918,9 +24130,9 @@
 safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV::safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV(const safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     exclusiveScissorCount = src.exclusiveScissorCount;
     pExclusiveScissors = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pExclusiveScissors) {
         pExclusiveScissors = new VkRect2D[src.exclusiveScissorCount];
         memcpy ((void *)pExclusiveScissors, (void *)src.pExclusiveScissors, sizeof(VkRect2D)*src.exclusiveScissorCount);
@@ -22933,11 +24145,13 @@
 
     if (pExclusiveScissors)
         delete[] pExclusiveScissors;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     exclusiveScissorCount = src.exclusiveScissorCount;
     pExclusiveScissors = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pExclusiveScissors) {
         pExclusiveScissors = new VkRect2D[src.exclusiveScissorCount];
         memcpy ((void *)pExclusiveScissors, (void *)src.pExclusiveScissors, sizeof(VkRect2D)*src.exclusiveScissorCount);
@@ -22950,14 +24164,16 @@
 {
     if (pExclusiveScissors)
         delete[] pExclusiveScissors;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV::initialize(const VkPipelineViewportExclusiveScissorStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     exclusiveScissorCount = in_struct->exclusiveScissorCount;
     pExclusiveScissors = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pExclusiveScissors) {
         pExclusiveScissors = new VkRect2D[in_struct->exclusiveScissorCount];
         memcpy ((void *)pExclusiveScissors, (void *)in_struct->pExclusiveScissors, sizeof(VkRect2D)*in_struct->exclusiveScissorCount);
@@ -22967,9 +24183,9 @@
 void safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV::initialize(const safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     exclusiveScissorCount = src->exclusiveScissorCount;
     pExclusiveScissors = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pExclusiveScissors) {
         pExclusiveScissors = new VkRect2D[src->exclusiveScissorCount];
         memcpy ((void *)pExclusiveScissors, (void *)src->pExclusiveScissors, sizeof(VkRect2D)*src->exclusiveScissorCount);
@@ -22978,9 +24194,9 @@
 
 safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::safe_VkPhysicalDeviceExclusiveScissorFeaturesNV(const VkPhysicalDeviceExclusiveScissorFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     exclusiveScissor(in_struct->exclusiveScissor)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::safe_VkPhysicalDeviceExclusiveScissorFeaturesNV()
@@ -22989,45 +24205,49 @@
 safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::safe_VkPhysicalDeviceExclusiveScissorFeaturesNV(const safe_VkPhysicalDeviceExclusiveScissorFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     exclusiveScissor = src.exclusiveScissor;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceExclusiveScissorFeaturesNV& safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::operator=(const safe_VkPhysicalDeviceExclusiveScissorFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     exclusiveScissor = src.exclusiveScissor;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::~safe_VkPhysicalDeviceExclusiveScissorFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::initialize(const VkPhysicalDeviceExclusiveScissorFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     exclusiveScissor = in_struct->exclusiveScissor;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceExclusiveScissorFeaturesNV::initialize(const safe_VkPhysicalDeviceExclusiveScissorFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     exclusiveScissor = src->exclusiveScissor;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkQueueFamilyCheckpointPropertiesNV::safe_VkQueueFamilyCheckpointPropertiesNV(const VkQueueFamilyCheckpointPropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     checkpointExecutionStageMask(in_struct->checkpointExecutionStageMask)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkQueueFamilyCheckpointPropertiesNV::safe_VkQueueFamilyCheckpointPropertiesNV()
@@ -23036,46 +24256,50 @@
 safe_VkQueueFamilyCheckpointPropertiesNV::safe_VkQueueFamilyCheckpointPropertiesNV(const safe_VkQueueFamilyCheckpointPropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     checkpointExecutionStageMask = src.checkpointExecutionStageMask;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkQueueFamilyCheckpointPropertiesNV& safe_VkQueueFamilyCheckpointPropertiesNV::operator=(const safe_VkQueueFamilyCheckpointPropertiesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     checkpointExecutionStageMask = src.checkpointExecutionStageMask;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkQueueFamilyCheckpointPropertiesNV::~safe_VkQueueFamilyCheckpointPropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkQueueFamilyCheckpointPropertiesNV::initialize(const VkQueueFamilyCheckpointPropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     checkpointExecutionStageMask = in_struct->checkpointExecutionStageMask;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkQueueFamilyCheckpointPropertiesNV::initialize(const safe_VkQueueFamilyCheckpointPropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     checkpointExecutionStageMask = src->checkpointExecutionStageMask;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkCheckpointDataNV::safe_VkCheckpointDataNV(const VkCheckpointDataNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     stage(in_struct->stage),
     pCheckpointMarker(in_struct->pCheckpointMarker)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCheckpointDataNV::safe_VkCheckpointDataNV()
@@ -23084,49 +24308,53 @@
 safe_VkCheckpointDataNV::safe_VkCheckpointDataNV(const safe_VkCheckpointDataNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     stage = src.stage;
     pCheckpointMarker = src.pCheckpointMarker;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCheckpointDataNV& safe_VkCheckpointDataNV::operator=(const safe_VkCheckpointDataNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     stage = src.stage;
     pCheckpointMarker = src.pCheckpointMarker;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCheckpointDataNV::~safe_VkCheckpointDataNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCheckpointDataNV::initialize(const VkCheckpointDataNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     stage = in_struct->stage;
     pCheckpointMarker = in_struct->pCheckpointMarker;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCheckpointDataNV::initialize(const safe_VkCheckpointDataNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     stage = src->stage;
     pCheckpointMarker = src->pCheckpointMarker;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL(const VkPhysicalDeviceShaderIntegerFunctions2INTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderIntegerFunctions2(in_struct->shaderIntegerFunctions2)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL()
@@ -23135,38 +24363,42 @@
 safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL(const safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderIntegerFunctions2 = src.shaderIntegerFunctions2;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL& safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::operator=(const safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderIntegerFunctions2 = src.shaderIntegerFunctions2;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::~safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::initialize(const VkPhysicalDeviceShaderIntegerFunctions2INTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderIntegerFunctions2 = in_struct->shaderIntegerFunctions2;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL::initialize(const safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderIntegerFunctions2 = src->shaderIntegerFunctions2;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPerformanceValueDataINTEL::safe_VkPerformanceValueDataINTEL(const VkPerformanceValueDataINTEL* in_struct) :
@@ -23228,9 +24460,9 @@
 
 safe_VkInitializePerformanceApiInfoINTEL::safe_VkInitializePerformanceApiInfoINTEL(const VkInitializePerformanceApiInfoINTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pUserData(in_struct->pUserData)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkInitializePerformanceApiInfoINTEL::safe_VkInitializePerformanceApiInfoINTEL()
@@ -23239,45 +24471,49 @@
 safe_VkInitializePerformanceApiInfoINTEL::safe_VkInitializePerformanceApiInfoINTEL(const safe_VkInitializePerformanceApiInfoINTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pUserData = src.pUserData;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkInitializePerformanceApiInfoINTEL& safe_VkInitializePerformanceApiInfoINTEL::operator=(const safe_VkInitializePerformanceApiInfoINTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pUserData = src.pUserData;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkInitializePerformanceApiInfoINTEL::~safe_VkInitializePerformanceApiInfoINTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkInitializePerformanceApiInfoINTEL::initialize(const VkInitializePerformanceApiInfoINTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pUserData = in_struct->pUserData;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkInitializePerformanceApiInfoINTEL::initialize(const safe_VkInitializePerformanceApiInfoINTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pUserData = src->pUserData;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkQueryPoolCreateInfoINTEL::safe_VkQueryPoolCreateInfoINTEL(const VkQueryPoolCreateInfoINTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     performanceCountersSampling(in_struct->performanceCountersSampling)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkQueryPoolCreateInfoINTEL::safe_VkQueryPoolCreateInfoINTEL()
@@ -23286,45 +24522,49 @@
 safe_VkQueryPoolCreateInfoINTEL::safe_VkQueryPoolCreateInfoINTEL(const safe_VkQueryPoolCreateInfoINTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     performanceCountersSampling = src.performanceCountersSampling;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkQueryPoolCreateInfoINTEL& safe_VkQueryPoolCreateInfoINTEL::operator=(const safe_VkQueryPoolCreateInfoINTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     performanceCountersSampling = src.performanceCountersSampling;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkQueryPoolCreateInfoINTEL::~safe_VkQueryPoolCreateInfoINTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkQueryPoolCreateInfoINTEL::initialize(const VkQueryPoolCreateInfoINTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     performanceCountersSampling = in_struct->performanceCountersSampling;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkQueryPoolCreateInfoINTEL::initialize(const safe_VkQueryPoolCreateInfoINTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     performanceCountersSampling = src->performanceCountersSampling;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPerformanceMarkerInfoINTEL::safe_VkPerformanceMarkerInfoINTEL(const VkPerformanceMarkerInfoINTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     marker(in_struct->marker)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPerformanceMarkerInfoINTEL::safe_VkPerformanceMarkerInfoINTEL()
@@ -23333,45 +24573,49 @@
 safe_VkPerformanceMarkerInfoINTEL::safe_VkPerformanceMarkerInfoINTEL(const safe_VkPerformanceMarkerInfoINTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     marker = src.marker;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPerformanceMarkerInfoINTEL& safe_VkPerformanceMarkerInfoINTEL::operator=(const safe_VkPerformanceMarkerInfoINTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     marker = src.marker;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPerformanceMarkerInfoINTEL::~safe_VkPerformanceMarkerInfoINTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPerformanceMarkerInfoINTEL::initialize(const VkPerformanceMarkerInfoINTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     marker = in_struct->marker;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPerformanceMarkerInfoINTEL::initialize(const safe_VkPerformanceMarkerInfoINTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     marker = src->marker;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPerformanceStreamMarkerInfoINTEL::safe_VkPerformanceStreamMarkerInfoINTEL(const VkPerformanceStreamMarkerInfoINTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     marker(in_struct->marker)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPerformanceStreamMarkerInfoINTEL::safe_VkPerformanceStreamMarkerInfoINTEL()
@@ -23380,47 +24624,51 @@
 safe_VkPerformanceStreamMarkerInfoINTEL::safe_VkPerformanceStreamMarkerInfoINTEL(const safe_VkPerformanceStreamMarkerInfoINTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     marker = src.marker;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPerformanceStreamMarkerInfoINTEL& safe_VkPerformanceStreamMarkerInfoINTEL::operator=(const safe_VkPerformanceStreamMarkerInfoINTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     marker = src.marker;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPerformanceStreamMarkerInfoINTEL::~safe_VkPerformanceStreamMarkerInfoINTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPerformanceStreamMarkerInfoINTEL::initialize(const VkPerformanceStreamMarkerInfoINTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     marker = in_struct->marker;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPerformanceStreamMarkerInfoINTEL::initialize(const safe_VkPerformanceStreamMarkerInfoINTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     marker = src->marker;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPerformanceOverrideInfoINTEL::safe_VkPerformanceOverrideInfoINTEL(const VkPerformanceOverrideInfoINTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     type(in_struct->type),
     enable(in_struct->enable),
     parameter(in_struct->parameter)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPerformanceOverrideInfoINTEL::safe_VkPerformanceOverrideInfoINTEL()
@@ -23429,53 +24677,57 @@
 safe_VkPerformanceOverrideInfoINTEL::safe_VkPerformanceOverrideInfoINTEL(const safe_VkPerformanceOverrideInfoINTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     enable = src.enable;
     parameter = src.parameter;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPerformanceOverrideInfoINTEL& safe_VkPerformanceOverrideInfoINTEL::operator=(const safe_VkPerformanceOverrideInfoINTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
     enable = src.enable;
     parameter = src.parameter;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPerformanceOverrideInfoINTEL::~safe_VkPerformanceOverrideInfoINTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPerformanceOverrideInfoINTEL::initialize(const VkPerformanceOverrideInfoINTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     type = in_struct->type;
     enable = in_struct->enable;
     parameter = in_struct->parameter;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPerformanceOverrideInfoINTEL::initialize(const safe_VkPerformanceOverrideInfoINTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     type = src->type;
     enable = src->enable;
     parameter = src->parameter;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPerformanceConfigurationAcquireInfoINTEL::safe_VkPerformanceConfigurationAcquireInfoINTEL(const VkPerformanceConfigurationAcquireInfoINTEL* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     type(in_struct->type)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPerformanceConfigurationAcquireInfoINTEL::safe_VkPerformanceConfigurationAcquireInfoINTEL()
@@ -23484,48 +24736,52 @@
 safe_VkPerformanceConfigurationAcquireInfoINTEL::safe_VkPerformanceConfigurationAcquireInfoINTEL(const safe_VkPerformanceConfigurationAcquireInfoINTEL& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPerformanceConfigurationAcquireInfoINTEL& safe_VkPerformanceConfigurationAcquireInfoINTEL::operator=(const safe_VkPerformanceConfigurationAcquireInfoINTEL& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     type = src.type;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPerformanceConfigurationAcquireInfoINTEL::~safe_VkPerformanceConfigurationAcquireInfoINTEL()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPerformanceConfigurationAcquireInfoINTEL::initialize(const VkPerformanceConfigurationAcquireInfoINTEL* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     type = in_struct->type;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPerformanceConfigurationAcquireInfoINTEL::initialize(const safe_VkPerformanceConfigurationAcquireInfoINTEL* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     type = src->type;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::safe_VkPhysicalDevicePCIBusInfoPropertiesEXT(const VkPhysicalDevicePCIBusInfoPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     pciDomain(in_struct->pciDomain),
     pciBus(in_struct->pciBus),
     pciDevice(in_struct->pciDevice),
     pciFunction(in_struct->pciFunction)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::safe_VkPhysicalDevicePCIBusInfoPropertiesEXT()
@@ -23534,57 +24790,61 @@
 safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::safe_VkPhysicalDevicePCIBusInfoPropertiesEXT(const safe_VkPhysicalDevicePCIBusInfoPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     pciDomain = src.pciDomain;
     pciBus = src.pciBus;
     pciDevice = src.pciDevice;
     pciFunction = src.pciFunction;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDevicePCIBusInfoPropertiesEXT& safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::operator=(const safe_VkPhysicalDevicePCIBusInfoPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     pciDomain = src.pciDomain;
     pciBus = src.pciBus;
     pciDevice = src.pciDevice;
     pciFunction = src.pciFunction;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::~safe_VkPhysicalDevicePCIBusInfoPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::initialize(const VkPhysicalDevicePCIBusInfoPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     pciDomain = in_struct->pciDomain;
     pciBus = in_struct->pciBus;
     pciDevice = in_struct->pciDevice;
     pciFunction = in_struct->pciFunction;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDevicePCIBusInfoPropertiesEXT::initialize(const safe_VkPhysicalDevicePCIBusInfoPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     pciDomain = src->pciDomain;
     pciBus = src->pciBus;
     pciDevice = src->pciDevice;
     pciFunction = src->pciFunction;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD(const VkDisplayNativeHdrSurfaceCapabilitiesAMD* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     localDimmingSupport(in_struct->localDimmingSupport)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD()
@@ -23593,45 +24853,49 @@
 safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD(const safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     localDimmingSupport = src.localDimmingSupport;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD& safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::operator=(const safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     localDimmingSupport = src.localDimmingSupport;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::~safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::initialize(const VkDisplayNativeHdrSurfaceCapabilitiesAMD* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     localDimmingSupport = in_struct->localDimmingSupport;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD::initialize(const safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     localDimmingSupport = src->localDimmingSupport;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::safe_VkSwapchainDisplayNativeHdrCreateInfoAMD(const VkSwapchainDisplayNativeHdrCreateInfoAMD* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     localDimmingEnable(in_struct->localDimmingEnable)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::safe_VkSwapchainDisplayNativeHdrCreateInfoAMD()
@@ -23640,48 +24904,52 @@
 safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::safe_VkSwapchainDisplayNativeHdrCreateInfoAMD(const safe_VkSwapchainDisplayNativeHdrCreateInfoAMD& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     localDimmingEnable = src.localDimmingEnable;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSwapchainDisplayNativeHdrCreateInfoAMD& safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::operator=(const safe_VkSwapchainDisplayNativeHdrCreateInfoAMD& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     localDimmingEnable = src.localDimmingEnable;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::~safe_VkSwapchainDisplayNativeHdrCreateInfoAMD()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::initialize(const VkSwapchainDisplayNativeHdrCreateInfoAMD* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     localDimmingEnable = in_struct->localDimmingEnable;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSwapchainDisplayNativeHdrCreateInfoAMD::initialize(const safe_VkSwapchainDisplayNativeHdrCreateInfoAMD* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     localDimmingEnable = src->localDimmingEnable;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_FUCHSIA
 
 
 safe_VkImagePipeSurfaceCreateInfoFUCHSIA::safe_VkImagePipeSurfaceCreateInfoFUCHSIA(const VkImagePipeSurfaceCreateInfoFUCHSIA* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     imagePipeHandle(in_struct->imagePipeHandle)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImagePipeSurfaceCreateInfoFUCHSIA::safe_VkImagePipeSurfaceCreateInfoFUCHSIA()
@@ -23690,42 +24958,46 @@
 safe_VkImagePipeSurfaceCreateInfoFUCHSIA::safe_VkImagePipeSurfaceCreateInfoFUCHSIA(const safe_VkImagePipeSurfaceCreateInfoFUCHSIA& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     imagePipeHandle = src.imagePipeHandle;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImagePipeSurfaceCreateInfoFUCHSIA& safe_VkImagePipeSurfaceCreateInfoFUCHSIA::operator=(const safe_VkImagePipeSurfaceCreateInfoFUCHSIA& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     imagePipeHandle = src.imagePipeHandle;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImagePipeSurfaceCreateInfoFUCHSIA::~safe_VkImagePipeSurfaceCreateInfoFUCHSIA()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImagePipeSurfaceCreateInfoFUCHSIA::initialize(const VkImagePipeSurfaceCreateInfoFUCHSIA* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     imagePipeHandle = in_struct->imagePipeHandle;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImagePipeSurfaceCreateInfoFUCHSIA::initialize(const safe_VkImagePipeSurfaceCreateInfoFUCHSIA* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     imagePipeHandle = src->imagePipeHandle;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_FUCHSIA
 
@@ -23734,10 +25006,10 @@
 
 safe_VkMetalSurfaceCreateInfoEXT::safe_VkMetalSurfaceCreateInfoEXT(const VkMetalSurfaceCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     pLayer(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pLayer) {
         pLayer = new CAMetalLayer(*in_struct->pLayer);
     }
@@ -23750,9 +25022,9 @@
 safe_VkMetalSurfaceCreateInfoEXT::safe_VkMetalSurfaceCreateInfoEXT(const safe_VkMetalSurfaceCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pLayer = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pLayer) {
         pLayer = new CAMetalLayer(*src.pLayer);
     }
@@ -23764,11 +25036,13 @@
 
     if (pLayer)
         delete pLayer;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     pLayer = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pLayer) {
         pLayer = new CAMetalLayer(*src.pLayer);
     }
@@ -23780,14 +25054,16 @@
 {
     if (pLayer)
         delete pLayer;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMetalSurfaceCreateInfoEXT::initialize(const VkMetalSurfaceCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     pLayer = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pLayer) {
         pLayer = new CAMetalLayer(*in_struct->pLayer);
     }
@@ -23796,9 +25072,9 @@
 void safe_VkMetalSurfaceCreateInfoEXT::initialize(const safe_VkMetalSurfaceCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     pLayer = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pLayer) {
         pLayer = new CAMetalLayer(*src->pLayer);
     }
@@ -23808,11 +25084,11 @@
 
 safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fragmentDensityMap(in_struct->fragmentDensityMap),
     fragmentDensityMapDynamic(in_struct->fragmentDensityMapDynamic),
     fragmentDensityMapNonSubsampledImages(in_struct->fragmentDensityMapNonSubsampledImages)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT()
@@ -23821,55 +25097,59 @@
 safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT(const safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fragmentDensityMap = src.fragmentDensityMap;
     fragmentDensityMapDynamic = src.fragmentDensityMapDynamic;
     fragmentDensityMapNonSubsampledImages = src.fragmentDensityMapNonSubsampledImages;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT& safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::operator=(const safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fragmentDensityMap = src.fragmentDensityMap;
     fragmentDensityMapDynamic = src.fragmentDensityMapDynamic;
     fragmentDensityMapNonSubsampledImages = src.fragmentDensityMapNonSubsampledImages;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::~safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::initialize(const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fragmentDensityMap = in_struct->fragmentDensityMap;
     fragmentDensityMapDynamic = in_struct->fragmentDensityMapDynamic;
     fragmentDensityMapNonSubsampledImages = in_struct->fragmentDensityMapNonSubsampledImages;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT::initialize(const safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fragmentDensityMap = src->fragmentDensityMap;
     fragmentDensityMapDynamic = src->fragmentDensityMapDynamic;
     fragmentDensityMapNonSubsampledImages = src->fragmentDensityMapNonSubsampledImages;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     minFragmentDensityTexelSize(in_struct->minFragmentDensityTexelSize),
     maxFragmentDensityTexelSize(in_struct->maxFragmentDensityTexelSize),
     fragmentDensityInvocations(in_struct->fragmentDensityInvocations)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT()
@@ -23878,53 +25158,57 @@
 safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT(const safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     minFragmentDensityTexelSize = src.minFragmentDensityTexelSize;
     maxFragmentDensityTexelSize = src.maxFragmentDensityTexelSize;
     fragmentDensityInvocations = src.fragmentDensityInvocations;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT& safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::operator=(const safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     minFragmentDensityTexelSize = src.minFragmentDensityTexelSize;
     maxFragmentDensityTexelSize = src.maxFragmentDensityTexelSize;
     fragmentDensityInvocations = src.fragmentDensityInvocations;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::~safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::initialize(const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     minFragmentDensityTexelSize = in_struct->minFragmentDensityTexelSize;
     maxFragmentDensityTexelSize = in_struct->maxFragmentDensityTexelSize;
     fragmentDensityInvocations = in_struct->fragmentDensityInvocations;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT::initialize(const safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     minFragmentDensityTexelSize = src->minFragmentDensityTexelSize;
     maxFragmentDensityTexelSize = src->maxFragmentDensityTexelSize;
     fragmentDensityInvocations = src->fragmentDensityInvocations;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkRenderPassFragmentDensityMapCreateInfoEXT::safe_VkRenderPassFragmentDensityMapCreateInfoEXT(const VkRenderPassFragmentDensityMapCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fragmentDensityMapAttachment(in_struct->fragmentDensityMapAttachment)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkRenderPassFragmentDensityMapCreateInfoEXT::safe_VkRenderPassFragmentDensityMapCreateInfoEXT()
@@ -23933,45 +25217,49 @@
 safe_VkRenderPassFragmentDensityMapCreateInfoEXT::safe_VkRenderPassFragmentDensityMapCreateInfoEXT(const safe_VkRenderPassFragmentDensityMapCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fragmentDensityMapAttachment = src.fragmentDensityMapAttachment;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkRenderPassFragmentDensityMapCreateInfoEXT& safe_VkRenderPassFragmentDensityMapCreateInfoEXT::operator=(const safe_VkRenderPassFragmentDensityMapCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fragmentDensityMapAttachment = src.fragmentDensityMapAttachment;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkRenderPassFragmentDensityMapCreateInfoEXT::~safe_VkRenderPassFragmentDensityMapCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkRenderPassFragmentDensityMapCreateInfoEXT::initialize(const VkRenderPassFragmentDensityMapCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fragmentDensityMapAttachment = in_struct->fragmentDensityMapAttachment;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkRenderPassFragmentDensityMapCreateInfoEXT::initialize(const safe_VkRenderPassFragmentDensityMapCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fragmentDensityMapAttachment = src->fragmentDensityMapAttachment;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT(const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     scalarBlockLayout(in_struct->scalarBlockLayout)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT()
@@ -23980,44 +25268,48 @@
 safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT(const safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     scalarBlockLayout = src.scalarBlockLayout;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::operator=(const safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     scalarBlockLayout = src.scalarBlockLayout;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::~safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::initialize(const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     scalarBlockLayout = in_struct->scalarBlockLayout;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT::initialize(const safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     scalarBlockLayout = src->scalarBlockLayout;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT::safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT(const VkPhysicalDeviceMemoryBudgetPropertiesEXT* in_struct) :
-    sType(in_struct->sType),
-    pNext(in_struct->pNext)
+    sType(in_struct->sType)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_MEMORY_HEAPS; ++i) {
         heapBudget[i] = in_struct->heapBudget[i];
     }
@@ -24032,7 +25324,7 @@
 safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT::safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT(const safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_MEMORY_HEAPS; ++i) {
         heapBudget[i] = src.heapBudget[i];
     }
@@ -24045,9 +25337,11 @@
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
+    pNext = SafePnextCopy(src.pNext);
     for (uint32_t i=0; i<VK_MAX_MEMORY_HEAPS; ++i) {
         heapBudget[i] = src.heapBudget[i];
     }
@@ -24060,12 +25354,14 @@
 
 safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT::~safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT::initialize(const VkPhysicalDeviceMemoryBudgetPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
+    pNext = SafePnextCopy(in_struct->pNext);
     for (uint32_t i=0; i<VK_MAX_MEMORY_HEAPS; ++i) {
         heapBudget[i] = in_struct->heapBudget[i];
     }
@@ -24077,7 +25373,7 @@
 void safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT::initialize(const safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
+    pNext = SafePnextCopy(src->pNext);
     for (uint32_t i=0; i<VK_MAX_MEMORY_HEAPS; ++i) {
         heapBudget[i] = src->heapBudget[i];
     }
@@ -24088,9 +25384,9 @@
 
 safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT(const VkPhysicalDeviceMemoryPriorityFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     memoryPriority(in_struct->memoryPriority)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT()
@@ -24099,45 +25395,49 @@
 safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT(const safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     memoryPriority = src.memoryPriority;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT& safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::operator=(const safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     memoryPriority = src.memoryPriority;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::~safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::initialize(const VkPhysicalDeviceMemoryPriorityFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     memoryPriority = in_struct->memoryPriority;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT::initialize(const safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     memoryPriority = src->memoryPriority;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkMemoryPriorityAllocateInfoEXT::safe_VkMemoryPriorityAllocateInfoEXT(const VkMemoryPriorityAllocateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     priority(in_struct->priority)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkMemoryPriorityAllocateInfoEXT::safe_VkMemoryPriorityAllocateInfoEXT()
@@ -24146,45 +25446,49 @@
 safe_VkMemoryPriorityAllocateInfoEXT::safe_VkMemoryPriorityAllocateInfoEXT(const safe_VkMemoryPriorityAllocateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     priority = src.priority;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkMemoryPriorityAllocateInfoEXT& safe_VkMemoryPriorityAllocateInfoEXT::operator=(const safe_VkMemoryPriorityAllocateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     priority = src.priority;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkMemoryPriorityAllocateInfoEXT::~safe_VkMemoryPriorityAllocateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkMemoryPriorityAllocateInfoEXT::initialize(const VkMemoryPriorityAllocateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     priority = in_struct->priority;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkMemoryPriorityAllocateInfoEXT::initialize(const safe_VkMemoryPriorityAllocateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     priority = src->priority;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     dedicatedAllocationImageAliasing(in_struct->dedicatedAllocationImageAliasing)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV()
@@ -24193,47 +25497,51 @@
 safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(const safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     dedicatedAllocationImageAliasing = src.dedicatedAllocationImageAliasing;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::operator=(const safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     dedicatedAllocationImageAliasing = src.dedicatedAllocationImageAliasing;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::~safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::initialize(const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     dedicatedAllocationImageAliasing = in_struct->dedicatedAllocationImageAliasing;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV::initialize(const safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     dedicatedAllocationImageAliasing = src->dedicatedAllocationImageAliasing;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     bufferDeviceAddress(in_struct->bufferDeviceAddress),
     bufferDeviceAddressCaptureReplay(in_struct->bufferDeviceAddressCaptureReplay),
     bufferDeviceAddressMultiDevice(in_struct->bufferDeviceAddressMultiDevice)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT()
@@ -24242,53 +25550,57 @@
 safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT(const safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     bufferDeviceAddress = src.bufferDeviceAddress;
     bufferDeviceAddressCaptureReplay = src.bufferDeviceAddressCaptureReplay;
     bufferDeviceAddressMultiDevice = src.bufferDeviceAddressMultiDevice;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::operator=(const safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     bufferDeviceAddress = src.bufferDeviceAddress;
     bufferDeviceAddressCaptureReplay = src.bufferDeviceAddressCaptureReplay;
     bufferDeviceAddressMultiDevice = src.bufferDeviceAddressMultiDevice;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::~safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::initialize(const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     bufferDeviceAddress = in_struct->bufferDeviceAddress;
     bufferDeviceAddressCaptureReplay = in_struct->bufferDeviceAddressCaptureReplay;
     bufferDeviceAddressMultiDevice = in_struct->bufferDeviceAddressMultiDevice;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT::initialize(const safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     bufferDeviceAddress = src->bufferDeviceAddress;
     bufferDeviceAddressCaptureReplay = src->bufferDeviceAddressCaptureReplay;
     bufferDeviceAddressMultiDevice = src->bufferDeviceAddressMultiDevice;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBufferDeviceAddressInfoEXT::safe_VkBufferDeviceAddressInfoEXT(const VkBufferDeviceAddressInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     buffer(in_struct->buffer)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBufferDeviceAddressInfoEXT::safe_VkBufferDeviceAddressInfoEXT()
@@ -24297,45 +25609,49 @@
 safe_VkBufferDeviceAddressInfoEXT::safe_VkBufferDeviceAddressInfoEXT(const safe_VkBufferDeviceAddressInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBufferDeviceAddressInfoEXT& safe_VkBufferDeviceAddressInfoEXT::operator=(const safe_VkBufferDeviceAddressInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     buffer = src.buffer;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBufferDeviceAddressInfoEXT::~safe_VkBufferDeviceAddressInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBufferDeviceAddressInfoEXT::initialize(const VkBufferDeviceAddressInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     buffer = in_struct->buffer;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBufferDeviceAddressInfoEXT::initialize(const safe_VkBufferDeviceAddressInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     buffer = src->buffer;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkBufferDeviceAddressCreateInfoEXT::safe_VkBufferDeviceAddressCreateInfoEXT(const VkBufferDeviceAddressCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     deviceAddress(in_struct->deviceAddress)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkBufferDeviceAddressCreateInfoEXT::safe_VkBufferDeviceAddressCreateInfoEXT()
@@ -24344,45 +25660,49 @@
 safe_VkBufferDeviceAddressCreateInfoEXT::safe_VkBufferDeviceAddressCreateInfoEXT(const safe_VkBufferDeviceAddressCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     deviceAddress = src.deviceAddress;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkBufferDeviceAddressCreateInfoEXT& safe_VkBufferDeviceAddressCreateInfoEXT::operator=(const safe_VkBufferDeviceAddressCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     deviceAddress = src.deviceAddress;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkBufferDeviceAddressCreateInfoEXT::~safe_VkBufferDeviceAddressCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkBufferDeviceAddressCreateInfoEXT::initialize(const VkBufferDeviceAddressCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     deviceAddress = in_struct->deviceAddress;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkBufferDeviceAddressCreateInfoEXT::initialize(const safe_VkBufferDeviceAddressCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     deviceAddress = src->deviceAddress;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkImageStencilUsageCreateInfoEXT::safe_VkImageStencilUsageCreateInfoEXT(const VkImageStencilUsageCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     stencilUsage(in_struct->stencilUsage)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkImageStencilUsageCreateInfoEXT::safe_VkImageStencilUsageCreateInfoEXT()
@@ -24391,48 +25711,52 @@
 safe_VkImageStencilUsageCreateInfoEXT::safe_VkImageStencilUsageCreateInfoEXT(const safe_VkImageStencilUsageCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     stencilUsage = src.stencilUsage;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkImageStencilUsageCreateInfoEXT& safe_VkImageStencilUsageCreateInfoEXT::operator=(const safe_VkImageStencilUsageCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     stencilUsage = src.stencilUsage;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkImageStencilUsageCreateInfoEXT::~safe_VkImageStencilUsageCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkImageStencilUsageCreateInfoEXT::initialize(const VkImageStencilUsageCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     stencilUsage = in_struct->stencilUsage;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkImageStencilUsageCreateInfoEXT::initialize(const safe_VkImageStencilUsageCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     stencilUsage = src->stencilUsage;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkValidationFeaturesEXT::safe_VkValidationFeaturesEXT(const VkValidationFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     enabledValidationFeatureCount(in_struct->enabledValidationFeatureCount),
     pEnabledValidationFeatures(nullptr),
     disabledValidationFeatureCount(in_struct->disabledValidationFeatureCount),
     pDisabledValidationFeatures(nullptr)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pEnabledValidationFeatures) {
         pEnabledValidationFeatures = new VkValidationFeatureEnableEXT[in_struct->enabledValidationFeatureCount];
         memcpy ((void *)pEnabledValidationFeatures, (void *)in_struct->pEnabledValidationFeatures, sizeof(VkValidationFeatureEnableEXT)*in_struct->enabledValidationFeatureCount);
@@ -24451,11 +25775,11 @@
 safe_VkValidationFeaturesEXT::safe_VkValidationFeaturesEXT(const safe_VkValidationFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     enabledValidationFeatureCount = src.enabledValidationFeatureCount;
     pEnabledValidationFeatures = nullptr;
     disabledValidationFeatureCount = src.disabledValidationFeatureCount;
     pDisabledValidationFeatures = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pEnabledValidationFeatures) {
         pEnabledValidationFeatures = new VkValidationFeatureEnableEXT[src.enabledValidationFeatureCount];
         memcpy ((void *)pEnabledValidationFeatures, (void *)src.pEnabledValidationFeatures, sizeof(VkValidationFeatureEnableEXT)*src.enabledValidationFeatureCount);
@@ -24474,13 +25798,15 @@
         delete[] pEnabledValidationFeatures;
     if (pDisabledValidationFeatures)
         delete[] pDisabledValidationFeatures;
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     enabledValidationFeatureCount = src.enabledValidationFeatureCount;
     pEnabledValidationFeatures = nullptr;
     disabledValidationFeatureCount = src.disabledValidationFeatureCount;
     pDisabledValidationFeatures = nullptr;
+    pNext = SafePnextCopy(src.pNext);
     if (src.pEnabledValidationFeatures) {
         pEnabledValidationFeatures = new VkValidationFeatureEnableEXT[src.enabledValidationFeatureCount];
         memcpy ((void *)pEnabledValidationFeatures, (void *)src.pEnabledValidationFeatures, sizeof(VkValidationFeatureEnableEXT)*src.enabledValidationFeatureCount);
@@ -24499,16 +25825,18 @@
         delete[] pEnabledValidationFeatures;
     if (pDisabledValidationFeatures)
         delete[] pDisabledValidationFeatures;
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkValidationFeaturesEXT::initialize(const VkValidationFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     enabledValidationFeatureCount = in_struct->enabledValidationFeatureCount;
     pEnabledValidationFeatures = nullptr;
     disabledValidationFeatureCount = in_struct->disabledValidationFeatureCount;
     pDisabledValidationFeatures = nullptr;
+    pNext = SafePnextCopy(in_struct->pNext);
     if (in_struct->pEnabledValidationFeatures) {
         pEnabledValidationFeatures = new VkValidationFeatureEnableEXT[in_struct->enabledValidationFeatureCount];
         memcpy ((void *)pEnabledValidationFeatures, (void *)in_struct->pEnabledValidationFeatures, sizeof(VkValidationFeatureEnableEXT)*in_struct->enabledValidationFeatureCount);
@@ -24522,11 +25850,11 @@
 void safe_VkValidationFeaturesEXT::initialize(const safe_VkValidationFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     enabledValidationFeatureCount = src->enabledValidationFeatureCount;
     pEnabledValidationFeatures = nullptr;
     disabledValidationFeatureCount = src->disabledValidationFeatureCount;
     pDisabledValidationFeatures = nullptr;
+    pNext = SafePnextCopy(src->pNext);
     if (src->pEnabledValidationFeatures) {
         pEnabledValidationFeatures = new VkValidationFeatureEnableEXT[src->enabledValidationFeatureCount];
         memcpy ((void *)pEnabledValidationFeatures, (void *)src->pEnabledValidationFeatures, sizeof(VkValidationFeatureEnableEXT)*src->enabledValidationFeatureCount);
@@ -24539,7 +25867,6 @@
 
 safe_VkCooperativeMatrixPropertiesNV::safe_VkCooperativeMatrixPropertiesNV(const VkCooperativeMatrixPropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     MSize(in_struct->MSize),
     NSize(in_struct->NSize),
     KSize(in_struct->KSize),
@@ -24549,6 +25876,7 @@
     DType(in_struct->DType),
     scope(in_struct->scope)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkCooperativeMatrixPropertiesNV::safe_VkCooperativeMatrixPropertiesNV()
@@ -24557,7 +25885,6 @@
 safe_VkCooperativeMatrixPropertiesNV::safe_VkCooperativeMatrixPropertiesNV(const safe_VkCooperativeMatrixPropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     MSize = src.MSize;
     NSize = src.NSize;
     KSize = src.KSize;
@@ -24566,15 +25893,17 @@
     CType = src.CType;
     DType = src.DType;
     scope = src.scope;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkCooperativeMatrixPropertiesNV& safe_VkCooperativeMatrixPropertiesNV::operator=(const safe_VkCooperativeMatrixPropertiesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     MSize = src.MSize;
     NSize = src.NSize;
     KSize = src.KSize;
@@ -24583,18 +25912,20 @@
     CType = src.CType;
     DType = src.DType;
     scope = src.scope;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkCooperativeMatrixPropertiesNV::~safe_VkCooperativeMatrixPropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkCooperativeMatrixPropertiesNV::initialize(const VkCooperativeMatrixPropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     MSize = in_struct->MSize;
     NSize = in_struct->NSize;
     KSize = in_struct->KSize;
@@ -24603,12 +25934,12 @@
     CType = in_struct->CType;
     DType = in_struct->DType;
     scope = in_struct->scope;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkCooperativeMatrixPropertiesNV::initialize(const safe_VkCooperativeMatrixPropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     MSize = src->MSize;
     NSize = src->NSize;
     KSize = src->KSize;
@@ -24617,14 +25948,15 @@
     CType = src->CType;
     DType = src->DType;
     scope = src->scope;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV(const VkPhysicalDeviceCooperativeMatrixFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     cooperativeMatrix(in_struct->cooperativeMatrix),
     cooperativeMatrixRobustBufferAccess(in_struct->cooperativeMatrixRobustBufferAccess)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV()
@@ -24633,49 +25965,53 @@
 safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV(const safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     cooperativeMatrix = src.cooperativeMatrix;
     cooperativeMatrixRobustBufferAccess = src.cooperativeMatrixRobustBufferAccess;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV& safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::operator=(const safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     cooperativeMatrix = src.cooperativeMatrix;
     cooperativeMatrixRobustBufferAccess = src.cooperativeMatrixRobustBufferAccess;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::~safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::initialize(const VkPhysicalDeviceCooperativeMatrixFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     cooperativeMatrix = in_struct->cooperativeMatrix;
     cooperativeMatrixRobustBufferAccess = in_struct->cooperativeMatrixRobustBufferAccess;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV::initialize(const safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     cooperativeMatrix = src->cooperativeMatrix;
     cooperativeMatrixRobustBufferAccess = src->cooperativeMatrixRobustBufferAccess;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV(const VkPhysicalDeviceCooperativeMatrixPropertiesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     cooperativeMatrixSupportedStages(in_struct->cooperativeMatrixSupportedStages)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV()
@@ -24684,45 +26020,49 @@
 safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV(const safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     cooperativeMatrixSupportedStages = src.cooperativeMatrixSupportedStages;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV& safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::operator=(const safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     cooperativeMatrixSupportedStages = src.cooperativeMatrixSupportedStages;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::~safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::initialize(const VkPhysicalDeviceCooperativeMatrixPropertiesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     cooperativeMatrixSupportedStages = in_struct->cooperativeMatrixSupportedStages;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV::initialize(const safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     cooperativeMatrixSupportedStages = src->cooperativeMatrixSupportedStages;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV(const VkPhysicalDeviceCoverageReductionModeFeaturesNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     coverageReductionMode(in_struct->coverageReductionMode)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV()
@@ -24731,46 +26071,50 @@
 safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV(const safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     coverageReductionMode = src.coverageReductionMode;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV& safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::operator=(const safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     coverageReductionMode = src.coverageReductionMode;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::~safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::initialize(const VkPhysicalDeviceCoverageReductionModeFeaturesNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     coverageReductionMode = in_struct->coverageReductionMode;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV::initialize(const safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     coverageReductionMode = src->coverageReductionMode;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPipelineCoverageReductionStateCreateInfoNV::safe_VkPipelineCoverageReductionStateCreateInfoNV(const VkPipelineCoverageReductionStateCreateInfoNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags),
     coverageReductionMode(in_struct->coverageReductionMode)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPipelineCoverageReductionStateCreateInfoNV::safe_VkPipelineCoverageReductionStateCreateInfoNV()
@@ -24779,52 +26123,56 @@
 safe_VkPipelineCoverageReductionStateCreateInfoNV::safe_VkPipelineCoverageReductionStateCreateInfoNV(const safe_VkPipelineCoverageReductionStateCreateInfoNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     coverageReductionMode = src.coverageReductionMode;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPipelineCoverageReductionStateCreateInfoNV& safe_VkPipelineCoverageReductionStateCreateInfoNV::operator=(const safe_VkPipelineCoverageReductionStateCreateInfoNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
     coverageReductionMode = src.coverageReductionMode;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPipelineCoverageReductionStateCreateInfoNV::~safe_VkPipelineCoverageReductionStateCreateInfoNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPipelineCoverageReductionStateCreateInfoNV::initialize(const VkPipelineCoverageReductionStateCreateInfoNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
     coverageReductionMode = in_struct->coverageReductionMode;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPipelineCoverageReductionStateCreateInfoNV::initialize(const safe_VkPipelineCoverageReductionStateCreateInfoNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
     coverageReductionMode = src->coverageReductionMode;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkFramebufferMixedSamplesCombinationNV::safe_VkFramebufferMixedSamplesCombinationNV(const VkFramebufferMixedSamplesCombinationNV* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     coverageReductionMode(in_struct->coverageReductionMode),
     rasterizationSamples(in_struct->rasterizationSamples),
     depthStencilSamples(in_struct->depthStencilSamples),
     colorSamples(in_struct->colorSamples)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkFramebufferMixedSamplesCombinationNV::safe_VkFramebufferMixedSamplesCombinationNV()
@@ -24833,59 +26181,63 @@
 safe_VkFramebufferMixedSamplesCombinationNV::safe_VkFramebufferMixedSamplesCombinationNV(const safe_VkFramebufferMixedSamplesCombinationNV& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     coverageReductionMode = src.coverageReductionMode;
     rasterizationSamples = src.rasterizationSamples;
     depthStencilSamples = src.depthStencilSamples;
     colorSamples = src.colorSamples;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkFramebufferMixedSamplesCombinationNV& safe_VkFramebufferMixedSamplesCombinationNV::operator=(const safe_VkFramebufferMixedSamplesCombinationNV& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     coverageReductionMode = src.coverageReductionMode;
     rasterizationSamples = src.rasterizationSamples;
     depthStencilSamples = src.depthStencilSamples;
     colorSamples = src.colorSamples;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkFramebufferMixedSamplesCombinationNV::~safe_VkFramebufferMixedSamplesCombinationNV()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkFramebufferMixedSamplesCombinationNV::initialize(const VkFramebufferMixedSamplesCombinationNV* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     coverageReductionMode = in_struct->coverageReductionMode;
     rasterizationSamples = in_struct->rasterizationSamples;
     depthStencilSamples = in_struct->depthStencilSamples;
     colorSamples = in_struct->colorSamples;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkFramebufferMixedSamplesCombinationNV::initialize(const safe_VkFramebufferMixedSamplesCombinationNV* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     coverageReductionMode = src->coverageReductionMode;
     rasterizationSamples = src->rasterizationSamples;
     depthStencilSamples = src->depthStencilSamples;
     colorSamples = src->colorSamples;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fragmentShaderSampleInterlock(in_struct->fragmentShaderSampleInterlock),
     fragmentShaderPixelInterlock(in_struct->fragmentShaderPixelInterlock),
     fragmentShaderShadingRateInterlock(in_struct->fragmentShaderShadingRateInterlock)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT()
@@ -24894,53 +26246,57 @@
 safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(const safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fragmentShaderSampleInterlock = src.fragmentShaderSampleInterlock;
     fragmentShaderPixelInterlock = src.fragmentShaderPixelInterlock;
     fragmentShaderShadingRateInterlock = src.fragmentShaderShadingRateInterlock;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::operator=(const safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fragmentShaderSampleInterlock = src.fragmentShaderSampleInterlock;
     fragmentShaderPixelInterlock = src.fragmentShaderPixelInterlock;
     fragmentShaderShadingRateInterlock = src.fragmentShaderShadingRateInterlock;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::~safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::initialize(const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fragmentShaderSampleInterlock = in_struct->fragmentShaderSampleInterlock;
     fragmentShaderPixelInterlock = in_struct->fragmentShaderPixelInterlock;
     fragmentShaderShadingRateInterlock = in_struct->fragmentShaderShadingRateInterlock;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT::initialize(const safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fragmentShaderSampleInterlock = src->fragmentShaderSampleInterlock;
     fragmentShaderPixelInterlock = src->fragmentShaderPixelInterlock;
     fragmentShaderShadingRateInterlock = src->fragmentShaderShadingRateInterlock;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     ycbcrImageArrays(in_struct->ycbcrImageArrays)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT()
@@ -24949,47 +26305,51 @@
 safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT(const safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     ycbcrImageArrays = src.ycbcrImageArrays;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::operator=(const safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     ycbcrImageArrays = src.ycbcrImageArrays;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::~safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::initialize(const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     ycbcrImageArrays = in_struct->ycbcrImageArrays;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT::initialize(const safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     ycbcrImageArrays = src->ycbcrImageArrays;
+    pNext = SafePnextCopy(src->pNext);
 }
 #ifdef VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkSurfaceFullScreenExclusiveInfoEXT::safe_VkSurfaceFullScreenExclusiveInfoEXT(const VkSurfaceFullScreenExclusiveInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fullScreenExclusive(in_struct->fullScreenExclusive)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceFullScreenExclusiveInfoEXT::safe_VkSurfaceFullScreenExclusiveInfoEXT()
@@ -24998,38 +26358,42 @@
 safe_VkSurfaceFullScreenExclusiveInfoEXT::safe_VkSurfaceFullScreenExclusiveInfoEXT(const safe_VkSurfaceFullScreenExclusiveInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fullScreenExclusive = src.fullScreenExclusive;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceFullScreenExclusiveInfoEXT& safe_VkSurfaceFullScreenExclusiveInfoEXT::operator=(const safe_VkSurfaceFullScreenExclusiveInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fullScreenExclusive = src.fullScreenExclusive;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceFullScreenExclusiveInfoEXT::~safe_VkSurfaceFullScreenExclusiveInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceFullScreenExclusiveInfoEXT::initialize(const VkSurfaceFullScreenExclusiveInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fullScreenExclusive = in_struct->fullScreenExclusive;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceFullScreenExclusiveInfoEXT::initialize(const safe_VkSurfaceFullScreenExclusiveInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fullScreenExclusive = src->fullScreenExclusive;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -25038,9 +26402,9 @@
 
 safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT(const VkSurfaceCapabilitiesFullScreenExclusiveEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     fullScreenExclusiveSupported(in_struct->fullScreenExclusiveSupported)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT()
@@ -25049,38 +26413,42 @@
 safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT(const safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     fullScreenExclusiveSupported = src.fullScreenExclusiveSupported;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT& safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::operator=(const safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     fullScreenExclusiveSupported = src.fullScreenExclusiveSupported;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::~safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::initialize(const VkSurfaceCapabilitiesFullScreenExclusiveEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     fullScreenExclusiveSupported = in_struct->fullScreenExclusiveSupported;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT::initialize(const safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     fullScreenExclusiveSupported = src->fullScreenExclusiveSupported;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
@@ -25089,9 +26457,9 @@
 
 safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::safe_VkSurfaceFullScreenExclusiveWin32InfoEXT(const VkSurfaceFullScreenExclusiveWin32InfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     hmonitor(in_struct->hmonitor)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::safe_VkSurfaceFullScreenExclusiveWin32InfoEXT()
@@ -25100,47 +26468,51 @@
 safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::safe_VkSurfaceFullScreenExclusiveWin32InfoEXT(const safe_VkSurfaceFullScreenExclusiveWin32InfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     hmonitor = src.hmonitor;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkSurfaceFullScreenExclusiveWin32InfoEXT& safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::operator=(const safe_VkSurfaceFullScreenExclusiveWin32InfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     hmonitor = src.hmonitor;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::~safe_VkSurfaceFullScreenExclusiveWin32InfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::initialize(const VkSurfaceFullScreenExclusiveWin32InfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     hmonitor = in_struct->hmonitor;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkSurfaceFullScreenExclusiveWin32InfoEXT::initialize(const safe_VkSurfaceFullScreenExclusiveWin32InfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     hmonitor = src->hmonitor;
+    pNext = SafePnextCopy(src->pNext);
 }
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 
 safe_VkHeadlessSurfaceCreateInfoEXT::safe_VkHeadlessSurfaceCreateInfoEXT(const VkHeadlessSurfaceCreateInfoEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     flags(in_struct->flags)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkHeadlessSurfaceCreateInfoEXT::safe_VkHeadlessSurfaceCreateInfoEXT()
@@ -25149,45 +26521,49 @@
 safe_VkHeadlessSurfaceCreateInfoEXT::safe_VkHeadlessSurfaceCreateInfoEXT(const safe_VkHeadlessSurfaceCreateInfoEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkHeadlessSurfaceCreateInfoEXT& safe_VkHeadlessSurfaceCreateInfoEXT::operator=(const safe_VkHeadlessSurfaceCreateInfoEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     flags = src.flags;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkHeadlessSurfaceCreateInfoEXT::~safe_VkHeadlessSurfaceCreateInfoEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkHeadlessSurfaceCreateInfoEXT::initialize(const VkHeadlessSurfaceCreateInfoEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     flags = in_struct->flags;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkHeadlessSurfaceCreateInfoEXT::initialize(const safe_VkHeadlessSurfaceCreateInfoEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     flags = src->flags;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::safe_VkPhysicalDeviceHostQueryResetFeaturesEXT(const VkPhysicalDeviceHostQueryResetFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     hostQueryReset(in_struct->hostQueryReset)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::safe_VkPhysicalDeviceHostQueryResetFeaturesEXT()
@@ -25196,45 +26572,49 @@
 safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::safe_VkPhysicalDeviceHostQueryResetFeaturesEXT(const safe_VkPhysicalDeviceHostQueryResetFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     hostQueryReset = src.hostQueryReset;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceHostQueryResetFeaturesEXT& safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::operator=(const safe_VkPhysicalDeviceHostQueryResetFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     hostQueryReset = src.hostQueryReset;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::~safe_VkPhysicalDeviceHostQueryResetFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::initialize(const VkPhysicalDeviceHostQueryResetFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     hostQueryReset = in_struct->hostQueryReset;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceHostQueryResetFeaturesEXT::initialize(const safe_VkPhysicalDeviceHostQueryResetFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     hostQueryReset = src->hostQueryReset;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     shaderDemoteToHelperInvocation(in_struct->shaderDemoteToHelperInvocation)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT()
@@ -25243,45 +26623,49 @@
 safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(const safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     shaderDemoteToHelperInvocation = src.shaderDemoteToHelperInvocation;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::operator=(const safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     shaderDemoteToHelperInvocation = src.shaderDemoteToHelperInvocation;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::~safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::initialize(const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     shaderDemoteToHelperInvocation = in_struct->shaderDemoteToHelperInvocation;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT::initialize(const safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     shaderDemoteToHelperInvocation = src->shaderDemoteToHelperInvocation;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     texelBufferAlignment(in_struct->texelBufferAlignment)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT()
@@ -25290,48 +26674,52 @@
 safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(const safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     texelBufferAlignment = src.texelBufferAlignment;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::operator=(const safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     texelBufferAlignment = src.texelBufferAlignment;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::~safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::initialize(const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     texelBufferAlignment = in_struct->texelBufferAlignment;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT::initialize(const safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     texelBufferAlignment = src->texelBufferAlignment;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* in_struct) :
     sType(in_struct->sType),
-    pNext(in_struct->pNext),
     storageTexelBufferOffsetAlignmentBytes(in_struct->storageTexelBufferOffsetAlignmentBytes),
     storageTexelBufferOffsetSingleTexelAlignment(in_struct->storageTexelBufferOffsetSingleTexelAlignment),
     uniformTexelBufferOffsetAlignmentBytes(in_struct->uniformTexelBufferOffsetAlignmentBytes),
     uniformTexelBufferOffsetSingleTexelAlignment(in_struct->uniformTexelBufferOffsetSingleTexelAlignment)
 {
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT()
@@ -25340,1226 +26728,1237 @@
 safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT(const safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& src)
 {
     sType = src.sType;
-    pNext = src.pNext;
     storageTexelBufferOffsetAlignmentBytes = src.storageTexelBufferOffsetAlignmentBytes;
     storageTexelBufferOffsetSingleTexelAlignment = src.storageTexelBufferOffsetSingleTexelAlignment;
     uniformTexelBufferOffsetAlignmentBytes = src.uniformTexelBufferOffsetAlignmentBytes;
     uniformTexelBufferOffsetSingleTexelAlignment = src.uniformTexelBufferOffsetSingleTexelAlignment;
+    pNext = SafePnextCopy(src.pNext);
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::operator=(const safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& src)
 {
     if (&src == this) return *this;
 
+    if (pNext)
+        FreePnextChain(pNext);
 
     sType = src.sType;
-    pNext = src.pNext;
     storageTexelBufferOffsetAlignmentBytes = src.storageTexelBufferOffsetAlignmentBytes;
     storageTexelBufferOffsetSingleTexelAlignment = src.storageTexelBufferOffsetSingleTexelAlignment;
     uniformTexelBufferOffsetAlignmentBytes = src.uniformTexelBufferOffsetAlignmentBytes;
     uniformTexelBufferOffsetSingleTexelAlignment = src.uniformTexelBufferOffsetSingleTexelAlignment;
+    pNext = SafePnextCopy(src.pNext);
 
     return *this;
 }
 
 safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::~safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT()
 {
+    if (pNext)
+        FreePnextChain(pNext);
 }
 
 void safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::initialize(const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* in_struct)
 {
     sType = in_struct->sType;
-    pNext = in_struct->pNext;
     storageTexelBufferOffsetAlignmentBytes = in_struct->storageTexelBufferOffsetAlignmentBytes;
     storageTexelBufferOffsetSingleTexelAlignment = in_struct->storageTexelBufferOffsetSingleTexelAlignment;
     uniformTexelBufferOffsetAlignmentBytes = in_struct->uniformTexelBufferOffsetAlignmentBytes;
     uniformTexelBufferOffsetSingleTexelAlignment = in_struct->uniformTexelBufferOffsetSingleTexelAlignment;
+    pNext = SafePnextCopy(in_struct->pNext);
 }
 
 void safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::initialize(const safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT* src)
 {
     sType = src->sType;
-    pNext = src->pNext;
     storageTexelBufferOffsetAlignmentBytes = src->storageTexelBufferOffsetAlignmentBytes;
     storageTexelBufferOffsetSingleTexelAlignment = src->storageTexelBufferOffsetSingleTexelAlignment;
     uniformTexelBufferOffsetAlignmentBytes = src->uniformTexelBufferOffsetAlignmentBytes;
     uniformTexelBufferOffsetSingleTexelAlignment = src->uniformTexelBufferOffsetSingleTexelAlignment;
+    pNext = SafePnextCopy(src->pNext);
 }
 
 void *SafePnextCopy(const void *pNext) {
     void *cur_pnext = const_cast<void *>(pNext);
     void *cur_ext_struct = NULL;
+    bool unrecognized_stype = true;
 
-    if (cur_pnext == nullptr) {
-        return nullptr;
-    } else {
-        VkBaseOutStructure *header = reinterpret_cast<VkBaseOutStructure *>(cur_pnext);
+    while (unrecognized_stype) {
+        unrecognized_stype = false;
+        if (cur_pnext == nullptr) {
+            return nullptr;
+        } else {
+            VkBaseOutStructure *header = reinterpret_cast<VkBaseOutStructure *>(cur_pnext);
 
-        switch (header->sType) {
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
-                    safe_VkPhysicalDeviceSubgroupProperties *safe_struct = new safe_VkPhysicalDeviceSubgroupProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSubgroupProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+            switch (header->sType) {
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: {
+                        safe_VkPhysicalDeviceSubgroupProperties *safe_struct = new safe_VkPhysicalDeviceSubgroupProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSubgroupProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
-                    safe_VkPhysicalDevice16BitStorageFeatures *safe_struct = new safe_VkPhysicalDevice16BitStorageFeatures;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: {
+                        safe_VkPhysicalDevice16BitStorageFeatures *safe_struct = new safe_VkPhysicalDevice16BitStorageFeatures;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
-                    safe_VkMemoryDedicatedRequirements *safe_struct = new safe_VkMemoryDedicatedRequirements;
-                    safe_struct->initialize(reinterpret_cast<const VkMemoryDedicatedRequirements *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
+                        safe_VkMemoryDedicatedRequirements *safe_struct = new safe_VkMemoryDedicatedRequirements;
+                        safe_struct->initialize(reinterpret_cast<const VkMemoryDedicatedRequirements *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
-                    safe_VkMemoryDedicatedAllocateInfo *safe_struct = new safe_VkMemoryDedicatedAllocateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkMemoryDedicatedAllocateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
+                        safe_VkMemoryDedicatedAllocateInfo *safe_struct = new safe_VkMemoryDedicatedAllocateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkMemoryDedicatedAllocateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
-                    safe_VkMemoryAllocateFlagsInfo *safe_struct = new safe_VkMemoryAllocateFlagsInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkMemoryAllocateFlagsInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO: {
+                        safe_VkMemoryAllocateFlagsInfo *safe_struct = new safe_VkMemoryAllocateFlagsInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkMemoryAllocateFlagsInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
-                    safe_VkDeviceGroupRenderPassBeginInfo *safe_struct = new safe_VkDeviceGroupRenderPassBeginInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: {
+                        safe_VkDeviceGroupRenderPassBeginInfo *safe_struct = new safe_VkDeviceGroupRenderPassBeginInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
-                    safe_VkDeviceGroupCommandBufferBeginInfo *safe_struct = new safe_VkDeviceGroupCommandBufferBeginInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: {
+                        safe_VkDeviceGroupCommandBufferBeginInfo *safe_struct = new safe_VkDeviceGroupCommandBufferBeginInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
-                    safe_VkDeviceGroupSubmitInfo *safe_struct = new safe_VkDeviceGroupSubmitInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupSubmitInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO: {
+                        safe_VkDeviceGroupSubmitInfo *safe_struct = new safe_VkDeviceGroupSubmitInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupSubmitInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
-                    safe_VkDeviceGroupBindSparseInfo *safe_struct = new safe_VkDeviceGroupBindSparseInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupBindSparseInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO: {
+                        safe_VkDeviceGroupBindSparseInfo *safe_struct = new safe_VkDeviceGroupBindSparseInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupBindSparseInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
-                    safe_VkBindBufferMemoryDeviceGroupInfo *safe_struct = new safe_VkBindBufferMemoryDeviceGroupInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: {
+                        safe_VkBindBufferMemoryDeviceGroupInfo *safe_struct = new safe_VkBindBufferMemoryDeviceGroupInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
-                    safe_VkBindImageMemoryDeviceGroupInfo *safe_struct = new safe_VkBindImageMemoryDeviceGroupInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: {
+                        safe_VkBindImageMemoryDeviceGroupInfo *safe_struct = new safe_VkBindImageMemoryDeviceGroupInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
-                    safe_VkDeviceGroupDeviceCreateInfo *safe_struct = new safe_VkDeviceGroupDeviceCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupDeviceCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO: {
+                        safe_VkDeviceGroupDeviceCreateInfo *safe_struct = new safe_VkDeviceGroupDeviceCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupDeviceCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
-                    safe_VkPhysicalDeviceFeatures2 *safe_struct = new safe_VkPhysicalDeviceFeatures2;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFeatures2 *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2: {
+                        safe_VkPhysicalDeviceFeatures2 *safe_struct = new safe_VkPhysicalDeviceFeatures2;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFeatures2 *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
-                    safe_VkPhysicalDevicePointClippingProperties *safe_struct = new safe_VkPhysicalDevicePointClippingProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDevicePointClippingProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
+                        safe_VkPhysicalDevicePointClippingProperties *safe_struct = new safe_VkPhysicalDevicePointClippingProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDevicePointClippingProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
-                    safe_VkRenderPassInputAttachmentAspectCreateInfo *safe_struct = new safe_VkRenderPassInputAttachmentAspectCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: {
+                        safe_VkRenderPassInputAttachmentAspectCreateInfo *safe_struct = new safe_VkRenderPassInputAttachmentAspectCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
-                    safe_VkImageViewUsageCreateInfo *safe_struct = new safe_VkImageViewUsageCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkImageViewUsageCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO: {
+                        safe_VkImageViewUsageCreateInfo *safe_struct = new safe_VkImageViewUsageCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkImageViewUsageCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
-                    safe_VkPipelineTessellationDomainOriginStateCreateInfo *safe_struct = new safe_VkPipelineTessellationDomainOriginStateCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: {
+                        safe_VkPipelineTessellationDomainOriginStateCreateInfo *safe_struct = new safe_VkPipelineTessellationDomainOriginStateCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
-                    safe_VkRenderPassMultiviewCreateInfo *safe_struct = new safe_VkRenderPassMultiviewCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkRenderPassMultiviewCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: {
+                        safe_VkRenderPassMultiviewCreateInfo *safe_struct = new safe_VkRenderPassMultiviewCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkRenderPassMultiviewCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
-                    safe_VkPhysicalDeviceMultiviewFeatures *safe_struct = new safe_VkPhysicalDeviceMultiviewFeatures;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES: {
+                        safe_VkPhysicalDeviceMultiviewFeatures *safe_struct = new safe_VkPhysicalDeviceMultiviewFeatures;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
-                    safe_VkPhysicalDeviceMultiviewProperties *safe_struct = new safe_VkPhysicalDeviceMultiviewProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMultiviewProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: {
+                        safe_VkPhysicalDeviceMultiviewProperties *safe_struct = new safe_VkPhysicalDeviceMultiviewProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMultiviewProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
-                    safe_VkPhysicalDeviceVariablePointersFeatures *safe_struct = new safe_VkPhysicalDeviceVariablePointersFeatures;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: {
+                        safe_VkPhysicalDeviceVariablePointersFeatures *safe_struct = new safe_VkPhysicalDeviceVariablePointersFeatures;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
-                    safe_VkPhysicalDeviceProtectedMemoryFeatures *safe_struct = new safe_VkPhysicalDeviceProtectedMemoryFeatures;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: {
+                        safe_VkPhysicalDeviceProtectedMemoryFeatures *safe_struct = new safe_VkPhysicalDeviceProtectedMemoryFeatures;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
-                    safe_VkPhysicalDeviceProtectedMemoryProperties *safe_struct = new safe_VkPhysicalDeviceProtectedMemoryProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: {
+                        safe_VkPhysicalDeviceProtectedMemoryProperties *safe_struct = new safe_VkPhysicalDeviceProtectedMemoryProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
-                    safe_VkProtectedSubmitInfo *safe_struct = new safe_VkProtectedSubmitInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkProtectedSubmitInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO: {
+                        safe_VkProtectedSubmitInfo *safe_struct = new safe_VkProtectedSubmitInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkProtectedSubmitInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
-                    safe_VkSamplerYcbcrConversionInfo *safe_struct = new safe_VkSamplerYcbcrConversionInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkSamplerYcbcrConversionInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
+                        safe_VkSamplerYcbcrConversionInfo *safe_struct = new safe_VkSamplerYcbcrConversionInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkSamplerYcbcrConversionInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
-                    safe_VkBindImagePlaneMemoryInfo *safe_struct = new safe_VkBindImagePlaneMemoryInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkBindImagePlaneMemoryInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO: {
+                        safe_VkBindImagePlaneMemoryInfo *safe_struct = new safe_VkBindImagePlaneMemoryInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkBindImagePlaneMemoryInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
-                    safe_VkImagePlaneMemoryRequirementsInfo *safe_struct = new safe_VkImagePlaneMemoryRequirementsInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: {
+                        safe_VkImagePlaneMemoryRequirementsInfo *safe_struct = new safe_VkImagePlaneMemoryRequirementsInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
-                    safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures *safe_struct = new safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: {
+                        safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures *safe_struct = new safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
-                    safe_VkSamplerYcbcrConversionImageFormatProperties *safe_struct = new safe_VkSamplerYcbcrConversionImageFormatProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: {
+                        safe_VkSamplerYcbcrConversionImageFormatProperties *safe_struct = new safe_VkSamplerYcbcrConversionImageFormatProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
-                    safe_VkPhysicalDeviceExternalImageFormatInfo *safe_struct = new safe_VkPhysicalDeviceExternalImageFormatInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: {
+                        safe_VkPhysicalDeviceExternalImageFormatInfo *safe_struct = new safe_VkPhysicalDeviceExternalImageFormatInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
-                    safe_VkExternalImageFormatProperties *safe_struct = new safe_VkExternalImageFormatProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkExternalImageFormatProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES: {
+                        safe_VkExternalImageFormatProperties *safe_struct = new safe_VkExternalImageFormatProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkExternalImageFormatProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
-                    safe_VkPhysicalDeviceIDProperties *safe_struct = new safe_VkPhysicalDeviceIDProperties;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceIDProperties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES: {
+                        safe_VkPhysicalDeviceIDProperties *safe_struct = new safe_VkPhysicalDeviceIDProperties;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceIDProperties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
-                    safe_VkExternalMemoryImageCreateInfo *safe_struct = new safe_VkExternalMemoryImageCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkExternalMemoryImageCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO: {
+                        safe_VkExternalMemoryImageCreateInfo *safe_struct = new safe_VkExternalMemoryImageCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkExternalMemoryImageCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
-                    safe_VkExternalMemoryBufferCreateInfo *safe_struct = new safe_VkExternalMemoryBufferCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkExternalMemoryBufferCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO: {
+                        safe_VkExternalMemoryBufferCreateInfo *safe_struct = new safe_VkExternalMemoryBufferCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkExternalMemoryBufferCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
-                    safe_VkExportMemoryAllocateInfo *safe_struct = new safe_VkExportMemoryAllocateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkExportMemoryAllocateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: {
+                        safe_VkExportMemoryAllocateInfo *safe_struct = new safe_VkExportMemoryAllocateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkExportMemoryAllocateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
-                    safe_VkExportFenceCreateInfo *safe_struct = new safe_VkExportFenceCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkExportFenceCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO: {
+                        safe_VkExportFenceCreateInfo *safe_struct = new safe_VkExportFenceCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkExportFenceCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
-                    safe_VkExportSemaphoreCreateInfo *safe_struct = new safe_VkExportSemaphoreCreateInfo;
-                    safe_struct->initialize(reinterpret_cast<const VkExportSemaphoreCreateInfo *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO: {
+                        safe_VkExportSemaphoreCreateInfo *safe_struct = new safe_VkExportSemaphoreCreateInfo;
+                        safe_struct->initialize(reinterpret_cast<const VkExportSemaphoreCreateInfo *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
-                    safe_VkPhysicalDeviceMaintenance3Properties *safe_struct = new safe_VkPhysicalDeviceMaintenance3Properties;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: {
+                        safe_VkPhysicalDeviceMaintenance3Properties *safe_struct = new safe_VkPhysicalDeviceMaintenance3Properties;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
-                    safe_VkPhysicalDeviceShaderDrawParametersFeatures *safe_struct = new safe_VkPhysicalDeviceShaderDrawParametersFeatures;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: {
+                        safe_VkPhysicalDeviceShaderDrawParametersFeatures *safe_struct = new safe_VkPhysicalDeviceShaderDrawParametersFeatures;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: {
-                    safe_VkImageSwapchainCreateInfoKHR *safe_struct = new safe_VkImageSwapchainCreateInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkImageSwapchainCreateInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: {
+                        safe_VkImageSwapchainCreateInfoKHR *safe_struct = new safe_VkImageSwapchainCreateInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkImageSwapchainCreateInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
-                    safe_VkBindImageMemorySwapchainInfoKHR *safe_struct = new safe_VkBindImageMemorySwapchainInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
+                        safe_VkBindImageMemorySwapchainInfoKHR *safe_struct = new safe_VkBindImageMemorySwapchainInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: {
-                    safe_VkDeviceGroupPresentInfoKHR *safe_struct = new safe_VkDeviceGroupPresentInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupPresentInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR: {
+                        safe_VkDeviceGroupPresentInfoKHR *safe_struct = new safe_VkDeviceGroupPresentInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupPresentInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: {
-                    safe_VkDeviceGroupSwapchainCreateInfoKHR *safe_struct = new safe_VkDeviceGroupSwapchainCreateInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: {
+                        safe_VkDeviceGroupSwapchainCreateInfoKHR *safe_struct = new safe_VkDeviceGroupSwapchainCreateInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: {
-                    safe_VkDisplayPresentInfoKHR *safe_struct = new safe_VkDisplayPresentInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkDisplayPresentInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR: {
+                        safe_VkDisplayPresentInfoKHR *safe_struct = new safe_VkDisplayPresentInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkDisplayPresentInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: {
-                    safe_VkImportMemoryWin32HandleInfoKHR *safe_struct = new safe_VkImportMemoryWin32HandleInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: {
+                        safe_VkImportMemoryWin32HandleInfoKHR *safe_struct = new safe_VkImportMemoryWin32HandleInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: {
-                    safe_VkExportMemoryWin32HandleInfoKHR *safe_struct = new safe_VkExportMemoryWin32HandleInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: {
+                        safe_VkExportMemoryWin32HandleInfoKHR *safe_struct = new safe_VkExportMemoryWin32HandleInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR: {
-                    safe_VkImportMemoryFdInfoKHR *safe_struct = new safe_VkImportMemoryFdInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkImportMemoryFdInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR: {
+                        safe_VkImportMemoryFdInfoKHR *safe_struct = new safe_VkImportMemoryFdInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkImportMemoryFdInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: {
-                    safe_VkWin32KeyedMutexAcquireReleaseInfoKHR *safe_struct = new safe_VkWin32KeyedMutexAcquireReleaseInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: {
+                        safe_VkWin32KeyedMutexAcquireReleaseInfoKHR *safe_struct = new safe_VkWin32KeyedMutexAcquireReleaseInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: {
-                    safe_VkExportSemaphoreWin32HandleInfoKHR *safe_struct = new safe_VkExportSemaphoreWin32HandleInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: {
+                        safe_VkExportSemaphoreWin32HandleInfoKHR *safe_struct = new safe_VkExportSemaphoreWin32HandleInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR: {
-                    safe_VkD3D12FenceSubmitInfoKHR *safe_struct = new safe_VkD3D12FenceSubmitInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkD3D12FenceSubmitInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR: {
+                        safe_VkD3D12FenceSubmitInfoKHR *safe_struct = new safe_VkD3D12FenceSubmitInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkD3D12FenceSubmitInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: {
-                    safe_VkPhysicalDevicePushDescriptorPropertiesKHR *safe_struct = new safe_VkPhysicalDevicePushDescriptorPropertiesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: {
+                        safe_VkPhysicalDevicePushDescriptorPropertiesKHR *safe_struct = new safe_VkPhysicalDevicePushDescriptorPropertiesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR: {
-                    safe_VkPhysicalDeviceFloat16Int8FeaturesKHR *safe_struct = new safe_VkPhysicalDeviceFloat16Int8FeaturesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFloat16Int8FeaturesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR: {
+                        safe_VkPhysicalDeviceFloat16Int8FeaturesKHR *safe_struct = new safe_VkPhysicalDeviceFloat16Int8FeaturesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFloat16Int8FeaturesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
-                    safe_VkPresentRegionsKHR *safe_struct = new safe_VkPresentRegionsKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPresentRegionsKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR: {
+                        safe_VkPresentRegionsKHR *safe_struct = new safe_VkPresentRegionsKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPresentRegionsKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR: {
-                    safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR *safe_struct = new safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeaturesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR: {
+                        safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR *safe_struct = new safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeaturesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR: {
-                    safe_VkFramebufferAttachmentsCreateInfoKHR *safe_struct = new safe_VkFramebufferAttachmentsCreateInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkFramebufferAttachmentsCreateInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR: {
+                        safe_VkFramebufferAttachmentsCreateInfoKHR *safe_struct = new safe_VkFramebufferAttachmentsCreateInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkFramebufferAttachmentsCreateInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR: {
-                    safe_VkRenderPassAttachmentBeginInfoKHR *safe_struct = new safe_VkRenderPassAttachmentBeginInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkRenderPassAttachmentBeginInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR: {
+                        safe_VkRenderPassAttachmentBeginInfoKHR *safe_struct = new safe_VkRenderPassAttachmentBeginInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkRenderPassAttachmentBeginInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: {
-                    safe_VkSharedPresentSurfaceCapabilitiesKHR *safe_struct = new safe_VkSharedPresentSurfaceCapabilitiesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: {
+                        safe_VkSharedPresentSurfaceCapabilitiesKHR *safe_struct = new safe_VkSharedPresentSurfaceCapabilitiesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: {
-                    safe_VkExportFenceWin32HandleInfoKHR *safe_struct = new safe_VkExportFenceWin32HandleInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkExportFenceWin32HandleInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: {
+                        safe_VkExportFenceWin32HandleInfoKHR *safe_struct = new safe_VkExportFenceWin32HandleInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkExportFenceWin32HandleInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR: {
-                    safe_VkImageFormatListCreateInfoKHR *safe_struct = new safe_VkImageFormatListCreateInfoKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkImageFormatListCreateInfoKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR: {
+                        safe_VkImageFormatListCreateInfoKHR *safe_struct = new safe_VkImageFormatListCreateInfoKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkImageFormatListCreateInfoKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR: {
-                    safe_VkPhysicalDevice8BitStorageFeaturesKHR *safe_struct = new safe_VkPhysicalDevice8BitStorageFeaturesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDevice8BitStorageFeaturesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR: {
+                        safe_VkPhysicalDevice8BitStorageFeaturesKHR *safe_struct = new safe_VkPhysicalDevice8BitStorageFeaturesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDevice8BitStorageFeaturesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: {
-                    safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *safe_struct = new safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: {
+                        safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *safe_struct = new safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR: {
-                    safe_VkPhysicalDeviceDriverPropertiesKHR *safe_struct = new safe_VkPhysicalDeviceDriverPropertiesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDriverPropertiesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR: {
+                        safe_VkPhysicalDeviceDriverPropertiesKHR *safe_struct = new safe_VkPhysicalDeviceDriverPropertiesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDriverPropertiesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR: {
-                    safe_VkPhysicalDeviceFloatControlsPropertiesKHR *safe_struct = new safe_VkPhysicalDeviceFloatControlsPropertiesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFloatControlsPropertiesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR: {
+                        safe_VkPhysicalDeviceFloatControlsPropertiesKHR *safe_struct = new safe_VkPhysicalDeviceFloatControlsPropertiesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFloatControlsPropertiesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR: {
-                    safe_VkSubpassDescriptionDepthStencilResolveKHR *safe_struct = new safe_VkSubpassDescriptionDepthStencilResolveKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkSubpassDescriptionDepthStencilResolveKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR: {
+                        safe_VkSubpassDescriptionDepthStencilResolveKHR *safe_struct = new safe_VkSubpassDescriptionDepthStencilResolveKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkSubpassDescriptionDepthStencilResolveKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR: {
-                    safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR *safe_struct = new safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDepthStencilResolvePropertiesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR: {
+                        safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR *safe_struct = new safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDepthStencilResolvePropertiesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR: {
-                    safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *safe_struct = new safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR: {
+                        safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *safe_struct = new safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: {
-                    safe_VkSurfaceProtectedCapabilitiesKHR *safe_struct = new safe_VkSurfaceProtectedCapabilitiesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR: {
+                        safe_VkSurfaceProtectedCapabilitiesKHR *safe_struct = new safe_VkSurfaceProtectedCapabilitiesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkSurfaceProtectedCapabilitiesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: {
-                    safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *safe_struct = new safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: {
+                        safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *safe_struct = new safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: {
-                    safe_VkDebugReportCallbackCreateInfoEXT *safe_struct = new safe_VkDebugReportCallbackCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: {
+                        safe_VkDebugReportCallbackCreateInfoEXT *safe_struct = new safe_VkDebugReportCallbackCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: {
-                    safe_VkPipelineRasterizationStateRasterizationOrderAMD *safe_struct = new safe_VkPipelineRasterizationStateRasterizationOrderAMD;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: {
+                        safe_VkPipelineRasterizationStateRasterizationOrderAMD *safe_struct = new safe_VkPipelineRasterizationStateRasterizationOrderAMD;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: {
-                    safe_VkDedicatedAllocationImageCreateInfoNV *safe_struct = new safe_VkDedicatedAllocationImageCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: {
+                        safe_VkDedicatedAllocationImageCreateInfoNV *safe_struct = new safe_VkDedicatedAllocationImageCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: {
-                    safe_VkDedicatedAllocationBufferCreateInfoNV *safe_struct = new safe_VkDedicatedAllocationBufferCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: {
+                        safe_VkDedicatedAllocationBufferCreateInfoNV *safe_struct = new safe_VkDedicatedAllocationBufferCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: {
-                    safe_VkDedicatedAllocationMemoryAllocateInfoNV *safe_struct = new safe_VkDedicatedAllocationMemoryAllocateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: {
+                        safe_VkDedicatedAllocationMemoryAllocateInfoNV *safe_struct = new safe_VkDedicatedAllocationMemoryAllocateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTransformFeedbackFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTransformFeedbackPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
-                    safe_VkPipelineRasterizationStateStreamCreateInfoEXT *safe_struct = new safe_VkPipelineRasterizationStateStreamCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: {
+                        safe_VkPipelineRasterizationStateStreamCreateInfoEXT *safe_struct = new safe_VkPipelineRasterizationStateStreamCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationStateStreamCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: {
-                    safe_VkTextureLODGatherFormatPropertiesAMD *safe_struct = new safe_VkTextureLODGatherFormatPropertiesAMD;
-                    safe_struct->initialize(reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: {
+                        safe_VkTextureLODGatherFormatPropertiesAMD *safe_struct = new safe_VkTextureLODGatherFormatPropertiesAMD;
+                        safe_struct->initialize(reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: {
-                    safe_VkPhysicalDeviceCornerSampledImageFeaturesNV *safe_struct = new safe_VkPhysicalDeviceCornerSampledImageFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: {
+                        safe_VkPhysicalDeviceCornerSampledImageFeaturesNV *safe_struct = new safe_VkPhysicalDeviceCornerSampledImageFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCornerSampledImageFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: {
-                    safe_VkExternalMemoryImageCreateInfoNV *safe_struct = new safe_VkExternalMemoryImageCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkExternalMemoryImageCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: {
+                        safe_VkExternalMemoryImageCreateInfoNV *safe_struct = new safe_VkExternalMemoryImageCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkExternalMemoryImageCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: {
-                    safe_VkExportMemoryAllocateInfoNV *safe_struct = new safe_VkExportMemoryAllocateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkExportMemoryAllocateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV: {
+                        safe_VkExportMemoryAllocateInfoNV *safe_struct = new safe_VkExportMemoryAllocateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkExportMemoryAllocateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: {
-                    safe_VkImportMemoryWin32HandleInfoNV *safe_struct = new safe_VkImportMemoryWin32HandleInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkImportMemoryWin32HandleInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: {
+                        safe_VkImportMemoryWin32HandleInfoNV *safe_struct = new safe_VkImportMemoryWin32HandleInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkImportMemoryWin32HandleInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: {
-                    safe_VkExportMemoryWin32HandleInfoNV *safe_struct = new safe_VkExportMemoryWin32HandleInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkExportMemoryWin32HandleInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: {
+                        safe_VkExportMemoryWin32HandleInfoNV *safe_struct = new safe_VkExportMemoryWin32HandleInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkExportMemoryWin32HandleInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: {
-                    safe_VkWin32KeyedMutexAcquireReleaseInfoNV *safe_struct = new safe_VkWin32KeyedMutexAcquireReleaseInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: {
+                        safe_VkWin32KeyedMutexAcquireReleaseInfoNV *safe_struct = new safe_VkWin32KeyedMutexAcquireReleaseInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: {
-                    safe_VkValidationFlagsEXT *safe_struct = new safe_VkValidationFlagsEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkValidationFlagsEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: {
+                        safe_VkValidationFlagsEXT *safe_struct = new safe_VkValidationFlagsEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkValidationFlagsEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: {
-                    safe_VkImageViewASTCDecodeModeEXT *safe_struct = new safe_VkImageViewASTCDecodeModeEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkImageViewASTCDecodeModeEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT: {
+                        safe_VkImageViewASTCDecodeModeEXT *safe_struct = new safe_VkImageViewASTCDecodeModeEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkImageViewASTCDecodeModeEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceASTCDecodeFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceASTCDecodeFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceASTCDecodeFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceASTCDecodeFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceConditionalRenderingFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: {
-                    safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT *safe_struct = new safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: {
+                        safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT *safe_struct = new safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkCommandBufferInheritanceConditionalRenderingInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineViewportWScalingStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportWScalingStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineViewportWScalingStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportWScalingStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT: {
-                    safe_VkSwapchainCounterCreateInfoEXT *safe_struct = new safe_VkSwapchainCounterCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkSwapchainCounterCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT: {
+                        safe_VkSwapchainCounterCreateInfoEXT *safe_struct = new safe_VkSwapchainCounterCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkSwapchainCounterCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: {
-                    safe_VkPresentTimesInfoGOOGLE *safe_struct = new safe_VkPresentTimesInfoGOOGLE;
-                    safe_struct->initialize(reinterpret_cast<const VkPresentTimesInfoGOOGLE *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: {
+                        safe_VkPresentTimesInfoGOOGLE *safe_struct = new safe_VkPresentTimesInfoGOOGLE;
+                        safe_struct->initialize(reinterpret_cast<const VkPresentTimesInfoGOOGLE *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: {
-                    safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *safe_struct = new safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: {
+                        safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *safe_struct = new safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineViewportSwizzleStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportSwizzleStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineViewportSwizzleStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportSwizzleStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT *safe_struct = new safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT *safe_struct = new safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: {
-                    safe_VkPipelineDiscardRectangleStateCreateInfoEXT *safe_struct = new safe_VkPipelineDiscardRectangleStateCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: {
+                        safe_VkPipelineDiscardRectangleStateCreateInfoEXT *safe_struct = new safe_VkPipelineDiscardRectangleStateCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: {
-                    safe_VkPipelineRasterizationConservativeStateCreateInfoEXT *safe_struct = new safe_VkPipelineRasterizationConservativeStateCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: {
+                        safe_VkPipelineRasterizationConservativeStateCreateInfoEXT *safe_struct = new safe_VkPipelineRasterizationConservativeStateCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
-                    safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT *safe_struct = new safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: {
+                        safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT *safe_struct = new safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: {
-                    safe_VkDebugUtilsMessengerCreateInfoEXT *safe_struct = new safe_VkDebugUtilsMessengerCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: {
+                        safe_VkDebugUtilsMessengerCreateInfoEXT *safe_struct = new safe_VkDebugUtilsMessengerCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: {
-                    safe_VkAndroidHardwareBufferUsageANDROID *safe_struct = new safe_VkAndroidHardwareBufferUsageANDROID;
-                    safe_struct->initialize(reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: {
+                        safe_VkAndroidHardwareBufferUsageANDROID *safe_struct = new safe_VkAndroidHardwareBufferUsageANDROID;
+                        safe_struct->initialize(reinterpret_cast<const VkAndroidHardwareBufferUsageANDROID *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: {
-                    safe_VkAndroidHardwareBufferFormatPropertiesANDROID *safe_struct = new safe_VkAndroidHardwareBufferFormatPropertiesANDROID;
-                    safe_struct->initialize(reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: {
+                        safe_VkAndroidHardwareBufferFormatPropertiesANDROID *safe_struct = new safe_VkAndroidHardwareBufferFormatPropertiesANDROID;
+                        safe_struct->initialize(reinterpret_cast<const VkAndroidHardwareBufferFormatPropertiesANDROID *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: {
-                    safe_VkImportAndroidHardwareBufferInfoANDROID *safe_struct = new safe_VkImportAndroidHardwareBufferInfoANDROID;
-                    safe_struct->initialize(reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: {
+                        safe_VkImportAndroidHardwareBufferInfoANDROID *safe_struct = new safe_VkImportAndroidHardwareBufferInfoANDROID;
+                        safe_struct->initialize(reinterpret_cast<const VkImportAndroidHardwareBufferInfoANDROID *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: {
-                    safe_VkExternalFormatANDROID *safe_struct = new safe_VkExternalFormatANDROID;
-                    safe_struct->initialize(reinterpret_cast<const VkExternalFormatANDROID *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID: {
+                        safe_VkExternalFormatANDROID *safe_struct = new safe_VkExternalFormatANDROID;
+                        safe_struct->initialize(reinterpret_cast<const VkExternalFormatANDROID *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
-            case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT: {
-                    safe_VkSamplerReductionModeCreateInfoEXT *safe_struct = new safe_VkSamplerReductionModeCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT: {
+                        safe_VkSamplerReductionModeCreateInfoEXT *safe_struct = new safe_VkSamplerReductionModeCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT: {
-                    safe_VkWriteDescriptorSetInlineUniformBlockEXT *safe_struct = new safe_VkWriteDescriptorSetInlineUniformBlockEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlockEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT: {
+                        safe_VkWriteDescriptorSetInlineUniformBlockEXT *safe_struct = new safe_VkWriteDescriptorSetInlineUniformBlockEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlockEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT: {
-                    safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT *safe_struct = new safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT: {
+                        safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT *safe_struct = new safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: {
-                    safe_VkSampleLocationsInfoEXT *safe_struct = new safe_VkSampleLocationsInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkSampleLocationsInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT: {
+                        safe_VkSampleLocationsInfoEXT *safe_struct = new safe_VkSampleLocationsInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkSampleLocationsInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: {
-                    safe_VkRenderPassSampleLocationsBeginInfoEXT *safe_struct = new safe_VkRenderPassSampleLocationsBeginInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: {
+                        safe_VkRenderPassSampleLocationsBeginInfoEXT *safe_struct = new safe_VkRenderPassSampleLocationsBeginInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: {
-                    safe_VkPipelineSampleLocationsStateCreateInfoEXT *safe_struct = new safe_VkPipelineSampleLocationsStateCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: {
+                        safe_VkPipelineSampleLocationsStateCreateInfoEXT *safe_struct = new safe_VkPipelineSampleLocationsStateCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceSampleLocationsPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceSampleLocationsPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceSampleLocationsPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceSampleLocationsPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: {
-                    safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT *safe_struct = new safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: {
+                        safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT *safe_struct = new safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineCoverageToColorStateCreateInfoNV *safe_struct = new safe_VkPipelineCoverageToColorStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineCoverageToColorStateCreateInfoNV *safe_struct = new safe_VkPipelineCoverageToColorStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineCoverageModulationStateCreateInfoNV *safe_struct = new safe_VkPipelineCoverageModulationStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineCoverageModulationStateCreateInfoNV *safe_struct = new safe_VkPipelineCoverageModulationStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: {
-                    safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *safe_struct = new safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: {
+                        safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *safe_struct = new safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: {
-                    safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *safe_struct = new safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: {
+                        safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *safe_struct = new safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
-                    safe_VkDrmFormatModifierPropertiesListEXT *safe_struct = new safe_VkDrmFormatModifierPropertiesListEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: {
+                        safe_VkDrmFormatModifierPropertiesListEXT *safe_struct = new safe_VkDrmFormatModifierPropertiesListEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
-                    safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT *safe_struct = new safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: {
+                        safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT *safe_struct = new safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
-                    safe_VkImageDrmFormatModifierListCreateInfoEXT *safe_struct = new safe_VkImageDrmFormatModifierListCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: {
+                        safe_VkImageDrmFormatModifierListCreateInfoEXT *safe_struct = new safe_VkImageDrmFormatModifierListCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
-                    safe_VkImageDrmFormatModifierExplicitCreateInfoEXT *safe_struct = new safe_VkImageDrmFormatModifierExplicitCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: {
+                        safe_VkImageDrmFormatModifierExplicitCreateInfoEXT *safe_struct = new safe_VkImageDrmFormatModifierExplicitCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: {
-                    safe_VkShaderModuleValidationCacheCreateInfoEXT *safe_struct = new safe_VkShaderModuleValidationCacheCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: {
+                        safe_VkShaderModuleValidationCacheCreateInfoEXT *safe_struct = new safe_VkShaderModuleValidationCacheCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: {
-                    safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *safe_struct = new safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: {
+                        safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *safe_struct = new safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT: {
-                    safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *safe_struct = new safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT: {
+                        safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *safe_struct = new safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT: {
-                    safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT *safe_struct = new safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT: {
+                        safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT *safe_struct = new safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineViewportShadingRateImageStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportShadingRateImageStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineViewportShadingRateImageStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportShadingRateImageStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineViewportShadingRateImageStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: {
-                    safe_VkPhysicalDeviceShadingRateImageFeaturesNV *safe_struct = new safe_VkPhysicalDeviceShadingRateImageFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: {
+                        safe_VkPhysicalDeviceShadingRateImageFeaturesNV *safe_struct = new safe_VkPhysicalDeviceShadingRateImageFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShadingRateImageFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: {
-                    safe_VkPhysicalDeviceShadingRateImagePropertiesNV *safe_struct = new safe_VkPhysicalDeviceShadingRateImagePropertiesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: {
+                        safe_VkPhysicalDeviceShadingRateImagePropertiesNV *safe_struct = new safe_VkPhysicalDeviceShadingRateImagePropertiesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShadingRateImagePropertiesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: {
-                    safe_VkWriteDescriptorSetAccelerationStructureNV *safe_struct = new safe_VkWriteDescriptorSetAccelerationStructureNV;
-                    safe_struct->initialize(reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: {
+                        safe_VkWriteDescriptorSetAccelerationStructureNV *safe_struct = new safe_VkWriteDescriptorSetAccelerationStructureNV;
+                        safe_struct->initialize(reinterpret_cast<const VkWriteDescriptorSetAccelerationStructureNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: {
-                    safe_VkPhysicalDeviceRayTracingPropertiesNV *safe_struct = new safe_VkPhysicalDeviceRayTracingPropertiesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: {
+                        safe_VkPhysicalDeviceRayTracingPropertiesNV *safe_struct = new safe_VkPhysicalDeviceRayTracingPropertiesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceRayTracingPropertiesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: {
-                    safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *safe_struct = new safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: {
+                        safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *safe_struct = new safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV *safe_struct = new safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV *safe_struct = new safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: {
-                    safe_VkPhysicalDeviceImageViewImageFormatInfoEXT *safe_struct = new safe_VkPhysicalDeviceImageViewImageFormatInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: {
+                        safe_VkPhysicalDeviceImageViewImageFormatInfoEXT *safe_struct = new safe_VkPhysicalDeviceImageViewImageFormatInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: {
-                    safe_VkFilterCubicImageViewImageFormatPropertiesEXT *safe_struct = new safe_VkFilterCubicImageViewImageFormatPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: {
+                        safe_VkFilterCubicImageViewImageFormatPropertiesEXT *safe_struct = new safe_VkFilterCubicImageViewImageFormatPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT: {
-                    safe_VkDeviceQueueGlobalPriorityCreateInfoEXT *safe_struct = new safe_VkDeviceQueueGlobalPriorityCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT: {
+                        safe_VkDeviceQueueGlobalPriorityCreateInfoEXT *safe_struct = new safe_VkDeviceQueueGlobalPriorityCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: {
-                    safe_VkImportMemoryHostPointerInfoEXT *safe_struct = new safe_VkImportMemoryHostPointerInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkImportMemoryHostPointerInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: {
+                        safe_VkImportMemoryHostPointerInfoEXT *safe_struct = new safe_VkImportMemoryHostPointerInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkImportMemoryHostPointerInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: {
-                    safe_VkPhysicalDeviceShaderCorePropertiesAMD *safe_struct = new safe_VkPhysicalDeviceShaderCorePropertiesAMD;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: {
+                        safe_VkPhysicalDeviceShaderCorePropertiesAMD *safe_struct = new safe_VkPhysicalDeviceShaderCorePropertiesAMD;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderCorePropertiesAMD *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: {
-                    safe_VkDeviceMemoryOverallocationCreateInfoAMD *safe_struct = new safe_VkDeviceMemoryOverallocationCreateInfoAMD;
-                    safe_struct->initialize(reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: {
+                        safe_VkDeviceMemoryOverallocationCreateInfoAMD *safe_struct = new safe_VkDeviceMemoryOverallocationCreateInfoAMD;
+                        safe_struct->initialize(reinterpret_cast<const VkDeviceMemoryOverallocationCreateInfoAMD *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: {
-                    safe_VkPipelineVertexInputDivisorStateCreateInfoEXT *safe_struct = new safe_VkPipelineVertexInputDivisorStateCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: {
+                        safe_VkPipelineVertexInputDivisorStateCreateInfoEXT *safe_struct = new safe_VkPipelineVertexInputDivisorStateCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_GGP
-            case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: {
-                    safe_VkPresentFrameTokenGGP *safe_struct = new safe_VkPresentFrameTokenGGP;
-                    safe_struct->initialize(reinterpret_cast<const VkPresentFrameTokenGGP *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP: {
+                        safe_VkPresentFrameTokenGGP *safe_struct = new safe_VkPresentFrameTokenGGP;
+                        safe_struct->initialize(reinterpret_cast<const VkPresentFrameTokenGGP *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_GGP
 
-            case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT: {
-                    safe_VkPipelineCreationFeedbackCreateInfoEXT *safe_struct = new safe_VkPipelineCreationFeedbackCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineCreationFeedbackCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT: {
+                        safe_VkPipelineCreationFeedbackCreateInfoEXT *safe_struct = new safe_VkPipelineCreationFeedbackCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineCreationFeedbackCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: {
-                    safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *safe_struct = new safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: {
+                        safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *safe_struct = new safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: {
-                    safe_VkPhysicalDeviceMeshShaderFeaturesNV *safe_struct = new safe_VkPhysicalDeviceMeshShaderFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: {
+                        safe_VkPhysicalDeviceMeshShaderFeaturesNV *safe_struct = new safe_VkPhysicalDeviceMeshShaderFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMeshShaderFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: {
-                    safe_VkPhysicalDeviceMeshShaderPropertiesNV *safe_struct = new safe_VkPhysicalDeviceMeshShaderPropertiesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: {
+                        safe_VkPhysicalDeviceMeshShaderPropertiesNV *safe_struct = new safe_VkPhysicalDeviceMeshShaderPropertiesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMeshShaderPropertiesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV: {
-                    safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *safe_struct = new safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV: {
+                        safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *safe_struct = new safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: {
-                    safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV *safe_struct = new safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: {
+                        safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV *safe_struct = new safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderImageFootprintFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV *safe_struct = new safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineViewportExclusiveScissorStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: {
-                    safe_VkPhysicalDeviceExclusiveScissorFeaturesNV *safe_struct = new safe_VkPhysicalDeviceExclusiveScissorFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: {
+                        safe_VkPhysicalDeviceExclusiveScissorFeaturesNV *safe_struct = new safe_VkPhysicalDeviceExclusiveScissorFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceExclusiveScissorFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: {
-                    safe_VkQueueFamilyCheckpointPropertiesNV *safe_struct = new safe_VkQueueFamilyCheckpointPropertiesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: {
+                        safe_VkQueueFamilyCheckpointPropertiesNV *safe_struct = new safe_VkQueueFamilyCheckpointPropertiesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkQueueFamilyCheckpointPropertiesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL: {
-                    safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL *safe_struct = new safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2INTEL *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL: {
+                        safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL *safe_struct = new safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderIntegerFunctions2INTEL *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: {
-                    safe_VkPhysicalDevicePCIBusInfoPropertiesEXT *safe_struct = new safe_VkPhysicalDevicePCIBusInfoPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: {
+                        safe_VkPhysicalDevicePCIBusInfoPropertiesEXT *safe_struct = new safe_VkPhysicalDevicePCIBusInfoPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: {
-                    safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD *safe_struct = new safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD;
-                    safe_struct->initialize(reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: {
+                        safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD *safe_struct = new safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD;
+                        safe_struct->initialize(reinterpret_cast<const VkDisplayNativeHdrSurfaceCapabilitiesAMD *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: {
-                    safe_VkSwapchainDisplayNativeHdrCreateInfoAMD *safe_struct = new safe_VkSwapchainDisplayNativeHdrCreateInfoAMD;
-                    safe_struct->initialize(reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: {
+                        safe_VkSwapchainDisplayNativeHdrCreateInfoAMD *safe_struct = new safe_VkSwapchainDisplayNativeHdrCreateInfoAMD;
+                        safe_struct->initialize(reinterpret_cast<const VkSwapchainDisplayNativeHdrCreateInfoAMD *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
-                    safe_VkRenderPassFragmentDensityMapCreateInfoEXT *safe_struct = new safe_VkRenderPassFragmentDensityMapCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: {
+                        safe_VkRenderPassFragmentDensityMapCreateInfoEXT *safe_struct = new safe_VkRenderPassFragmentDensityMapCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkRenderPassFragmentDensityMapCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceMemoryPriorityFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: {
-                    safe_VkMemoryPriorityAllocateInfoEXT *safe_struct = new safe_VkMemoryPriorityAllocateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT: {
+                        safe_VkMemoryPriorityAllocateInfoEXT *safe_struct = new safe_VkMemoryPriorityAllocateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkMemoryPriorityAllocateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: {
-                    safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *safe_struct = new safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: {
+                        safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *safe_struct = new safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: {
-                    safe_VkBufferDeviceAddressCreateInfoEXT *safe_struct = new safe_VkBufferDeviceAddressCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: {
+                        safe_VkBufferDeviceAddressCreateInfoEXT *safe_struct = new safe_VkBufferDeviceAddressCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkBufferDeviceAddressCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT: {
-                    safe_VkImageStencilUsageCreateInfoEXT *safe_struct = new safe_VkImageStencilUsageCreateInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkImageStencilUsageCreateInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT: {
+                        safe_VkImageStencilUsageCreateInfoEXT *safe_struct = new safe_VkImageStencilUsageCreateInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkImageStencilUsageCreateInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: {
-                    safe_VkValidationFeaturesEXT *safe_struct = new safe_VkValidationFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkValidationFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: {
+                        safe_VkValidationFeaturesEXT *safe_struct = new safe_VkValidationFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkValidationFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: {
-                    safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV *safe_struct = new safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: {
+                        safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV *safe_struct = new safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: {
-                    safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV *safe_struct = new safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: {
+                        safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV *safe_struct = new safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCooperativeMatrixPropertiesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: {
-                    safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV *safe_struct = new safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: {
+                        safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV *safe_struct = new safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceCoverageReductionModeFeaturesNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: {
-                    safe_VkPipelineCoverageReductionStateCreateInfoNV *safe_struct = new safe_VkPipelineCoverageReductionStateCreateInfoNV;
-                    safe_struct->initialize(reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: {
+                        safe_VkPipelineCoverageReductionStateCreateInfoNV *safe_struct = new safe_VkPipelineCoverageReductionStateCreateInfoNV;
+                        safe_struct->initialize(reinterpret_cast<const VkPipelineCoverageReductionStateCreateInfoNV *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: {
-                    safe_VkSurfaceFullScreenExclusiveInfoEXT *safe_struct = new safe_VkSurfaceFullScreenExclusiveInfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: {
+                        safe_VkSurfaceFullScreenExclusiveInfoEXT *safe_struct = new safe_VkSurfaceFullScreenExclusiveInfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkSurfaceFullScreenExclusiveInfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: {
-                    safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT *safe_struct = new safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: {
+                        safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT *safe_struct = new safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkSurfaceCapabilitiesFullScreenExclusiveEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: {
-                    safe_VkSurfaceFullScreenExclusiveWin32InfoEXT *safe_struct = new safe_VkSurfaceFullScreenExclusiveWin32InfoEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: {
+                        safe_VkSurfaceFullScreenExclusiveWin32InfoEXT *safe_struct = new safe_VkSurfaceFullScreenExclusiveWin32InfoEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkSurfaceFullScreenExclusiveWin32InfoEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceHostQueryResetFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceHostQueryResetFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceHostQueryResetFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceHostQueryResetFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
-                    safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: {
+                        safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *safe_struct = new safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT: {
-                    safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
-                    safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *>(cur_pnext));
-                    cur_ext_struct = reinterpret_cast<void *>(safe_struct);
-                } break;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT: {
+                        safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *safe_struct = new safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
+                        safe_struct->initialize(reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *>(cur_pnext));
+                        cur_ext_struct = reinterpret_cast<void *>(safe_struct);
+                    } break;
 
-            default:
-                break;
+                default:
+                    // Encountered an unknown sType -- skip (do not copy) this entry in the chain
+                    unrecognized_stype = true;
+                    cur_pnext = header->pNext;
+                    break;
+            }
         }
     }
     return cur_ext_struct;
@@ -26567,802 +27966,805 @@
 
 
 
+// Free a const pNext extension chain
+void FreePnextChain(const void *head) {
+    FreePnextChain(const_cast<void *>(head));
+}
+
 // Free a pNext extension chain
 void FreePnextChain(void *head) {
-    VkBaseOutStructure *curr_ptr = reinterpret_cast<VkBaseOutStructure *>(head);
-    while (curr_ptr) {
-        VkBaseOutStructure *header = curr_ptr;
-        curr_ptr = reinterpret_cast<VkBaseOutStructure *>(header->pNext);
+    if (nullptr == head) return;
+    VkBaseOutStructure *header = reinterpret_cast<VkBaseOutStructure *>(head);
 
-        switch (header->sType) {
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceSubgroupProperties *>(header);
-                break;
+    switch (header->sType) {
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceSubgroupProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:
-                delete reinterpret_cast<safe_VkPhysicalDevice16BitStorageFeatures *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:
+            delete reinterpret_cast<safe_VkPhysicalDevice16BitStorageFeatures *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
-                delete reinterpret_cast<safe_VkMemoryDedicatedRequirements *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
+            delete reinterpret_cast<safe_VkMemoryDedicatedRequirements *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:
-                delete reinterpret_cast<safe_VkMemoryDedicatedAllocateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:
+            delete reinterpret_cast<safe_VkMemoryDedicatedAllocateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:
-                delete reinterpret_cast<safe_VkMemoryAllocateFlagsInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:
+            delete reinterpret_cast<safe_VkMemoryAllocateFlagsInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:
-                delete reinterpret_cast<safe_VkDeviceGroupRenderPassBeginInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:
+            delete reinterpret_cast<safe_VkDeviceGroupRenderPassBeginInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:
-                delete reinterpret_cast<safe_VkDeviceGroupCommandBufferBeginInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:
+            delete reinterpret_cast<safe_VkDeviceGroupCommandBufferBeginInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:
-                delete reinterpret_cast<safe_VkDeviceGroupSubmitInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:
+            delete reinterpret_cast<safe_VkDeviceGroupSubmitInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:
-                delete reinterpret_cast<safe_VkDeviceGroupBindSparseInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:
+            delete reinterpret_cast<safe_VkDeviceGroupBindSparseInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
-                delete reinterpret_cast<safe_VkBindBufferMemoryDeviceGroupInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
+            delete reinterpret_cast<safe_VkBindBufferMemoryDeviceGroupInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:
-                delete reinterpret_cast<safe_VkBindImageMemoryDeviceGroupInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:
+            delete reinterpret_cast<safe_VkBindImageMemoryDeviceGroupInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:
-                delete reinterpret_cast<safe_VkDeviceGroupDeviceCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:
+            delete reinterpret_cast<safe_VkDeviceGroupDeviceCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFeatures2 *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFeatures2 *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:
-                delete reinterpret_cast<safe_VkPhysicalDevicePointClippingProperties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:
+            delete reinterpret_cast<safe_VkPhysicalDevicePointClippingProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
-                delete reinterpret_cast<safe_VkRenderPassInputAttachmentAspectCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:
+            delete reinterpret_cast<safe_VkRenderPassInputAttachmentAspectCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
-                delete reinterpret_cast<safe_VkImageViewUsageCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:
+            delete reinterpret_cast<safe_VkImageViewUsageCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
-                delete reinterpret_cast<safe_VkPipelineTessellationDomainOriginStateCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
+            delete reinterpret_cast<safe_VkPipelineTessellationDomainOriginStateCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:
-                delete reinterpret_cast<safe_VkRenderPassMultiviewCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:
+            delete reinterpret_cast<safe_VkRenderPassMultiviewCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMultiviewFeatures *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMultiviewFeatures *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMultiviewProperties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMultiviewProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceVariablePointersFeatures *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceVariablePointersFeatures *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceProtectedMemoryFeatures *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceProtectedMemoryFeatures *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceProtectedMemoryProperties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceProtectedMemoryProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:
-                delete reinterpret_cast<safe_VkProtectedSubmitInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:
+            delete reinterpret_cast<safe_VkProtectedSubmitInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
-                delete reinterpret_cast<safe_VkSamplerYcbcrConversionInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
+            delete reinterpret_cast<safe_VkSamplerYcbcrConversionInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:
-                delete reinterpret_cast<safe_VkBindImagePlaneMemoryInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:
+            delete reinterpret_cast<safe_VkBindImagePlaneMemoryInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:
-                delete reinterpret_cast<safe_VkImagePlaneMemoryRequirementsInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:
+            delete reinterpret_cast<safe_VkImagePlaneMemoryRequirementsInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceSamplerYcbcrConversionFeatures *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
-                delete reinterpret_cast<safe_VkSamplerYcbcrConversionImageFormatProperties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:
+            delete reinterpret_cast<safe_VkSamplerYcbcrConversionImageFormatProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
-                delete reinterpret_cast<safe_VkPhysicalDeviceExternalImageFormatInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:
+            delete reinterpret_cast<safe_VkPhysicalDeviceExternalImageFormatInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
-                delete reinterpret_cast<safe_VkExternalImageFormatProperties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:
+            delete reinterpret_cast<safe_VkExternalImageFormatProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceIDProperties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceIDProperties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
-                delete reinterpret_cast<safe_VkExternalMemoryImageCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:
+            delete reinterpret_cast<safe_VkExternalMemoryImageCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
-                delete reinterpret_cast<safe_VkExternalMemoryBufferCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
+            delete reinterpret_cast<safe_VkExternalMemoryBufferCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
-                delete reinterpret_cast<safe_VkExportMemoryAllocateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:
+            delete reinterpret_cast<safe_VkExportMemoryAllocateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:
-                delete reinterpret_cast<safe_VkExportFenceCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:
+            delete reinterpret_cast<safe_VkExportFenceCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
-                delete reinterpret_cast<safe_VkExportSemaphoreCreateInfo *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
+            delete reinterpret_cast<safe_VkExportSemaphoreCreateInfo *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMaintenance3Properties *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMaintenance3Properties *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderDrawParametersFeatures *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderDrawParametersFeatures *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:
-                delete reinterpret_cast<safe_VkImageSwapchainCreateInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:
+            delete reinterpret_cast<safe_VkImageSwapchainCreateInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:
-                delete reinterpret_cast<safe_VkBindImageMemorySwapchainInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:
+            delete reinterpret_cast<safe_VkBindImageMemorySwapchainInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:
-                delete reinterpret_cast<safe_VkDeviceGroupPresentInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:
+            delete reinterpret_cast<safe_VkDeviceGroupPresentInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:
-                delete reinterpret_cast<safe_VkDeviceGroupSwapchainCreateInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:
+            delete reinterpret_cast<safe_VkDeviceGroupSwapchainCreateInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
-                delete reinterpret_cast<safe_VkDisplayPresentInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:
+            delete reinterpret_cast<safe_VkDisplayPresentInfoKHR *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
-                delete reinterpret_cast<safe_VkImportMemoryWin32HandleInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
+            delete reinterpret_cast<safe_VkImportMemoryWin32HandleInfoKHR *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
-                delete reinterpret_cast<safe_VkExportMemoryWin32HandleInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:
+            delete reinterpret_cast<safe_VkExportMemoryWin32HandleInfoKHR *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:
-                delete reinterpret_cast<safe_VkImportMemoryFdInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:
+            delete reinterpret_cast<safe_VkImportMemoryFdInfoKHR *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:
-                delete reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:
+            delete reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoKHR *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:
-                delete reinterpret_cast<safe_VkExportSemaphoreWin32HandleInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:
+            delete reinterpret_cast<safe_VkExportSemaphoreWin32HandleInfoKHR *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:
-                delete reinterpret_cast<safe_VkD3D12FenceSubmitInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:
+            delete reinterpret_cast<safe_VkD3D12FenceSubmitInfoKHR *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDevicePushDescriptorPropertiesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDevicePushDescriptorPropertiesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFloat16Int8FeaturesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFloat16Int8FeaturesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:
-                delete reinterpret_cast<safe_VkPresentRegionsKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:
+            delete reinterpret_cast<safe_VkPresentRegionsKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceImagelessFramebufferFeaturesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR:
-                delete reinterpret_cast<safe_VkFramebufferAttachmentsCreateInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR:
+            delete reinterpret_cast<safe_VkFramebufferAttachmentsCreateInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR:
-                delete reinterpret_cast<safe_VkRenderPassAttachmentBeginInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR:
+            delete reinterpret_cast<safe_VkRenderPassAttachmentBeginInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:
-                delete reinterpret_cast<safe_VkSharedPresentSurfaceCapabilitiesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:
+            delete reinterpret_cast<safe_VkSharedPresentSurfaceCapabilitiesKHR *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:
-                delete reinterpret_cast<safe_VkExportFenceWin32HandleInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:
+            delete reinterpret_cast<safe_VkExportFenceWin32HandleInfoKHR *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:
-                delete reinterpret_cast<safe_VkImageFormatListCreateInfoKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:
+            delete reinterpret_cast<safe_VkImageFormatListCreateInfoKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDevice8BitStorageFeaturesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDevice8BitStorageFeaturesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderAtomicInt64FeaturesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDriverPropertiesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDriverPropertiesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFloatControlsPropertiesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFloatControlsPropertiesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR:
-                delete reinterpret_cast<safe_VkSubpassDescriptionDepthStencilResolveKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR:
+            delete reinterpret_cast<safe_VkSubpassDescriptionDepthStencilResolveKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDepthStencilResolvePropertiesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceVulkanMemoryModelFeaturesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:
-                delete reinterpret_cast<safe_VkSurfaceProtectedCapabilitiesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:
+            delete reinterpret_cast<safe_VkSurfaceProtectedCapabilitiesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR:
-                delete reinterpret_cast<safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR:
+            delete reinterpret_cast<safe_VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkDebugReportCallbackCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkDebugReportCallbackCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
-                delete reinterpret_cast<safe_VkPipelineRasterizationStateRasterizationOrderAMD *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:
+            delete reinterpret_cast<safe_VkPipelineRasterizationStateRasterizationOrderAMD *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkDedicatedAllocationImageCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkDedicatedAllocationImageCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkDedicatedAllocationBufferCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkDedicatedAllocationBufferCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
-                delete reinterpret_cast<safe_VkDedicatedAllocationMemoryAllocateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:
+            delete reinterpret_cast<safe_VkDedicatedAllocationMemoryAllocateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceTransformFeedbackFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceTransformFeedbackPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineRasterizationStateStreamCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineRasterizationStateStreamCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:
-                delete reinterpret_cast<safe_VkTextureLODGatherFormatPropertiesAMD *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:
+            delete reinterpret_cast<safe_VkTextureLODGatherFormatPropertiesAMD *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceCornerSampledImageFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceCornerSampledImageFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkExternalMemoryImageCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkExternalMemoryImageCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:
-                delete reinterpret_cast<safe_VkExportMemoryAllocateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:
+            delete reinterpret_cast<safe_VkExportMemoryAllocateInfoNV *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:
-                delete reinterpret_cast<safe_VkImportMemoryWin32HandleInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:
+            delete reinterpret_cast<safe_VkImportMemoryWin32HandleInfoNV *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:
-                delete reinterpret_cast<safe_VkExportMemoryWin32HandleInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:
+            delete reinterpret_cast<safe_VkExportMemoryWin32HandleInfoNV *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:
-                delete reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:
+            delete reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoNV *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:
-                delete reinterpret_cast<safe_VkValidationFlagsEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:
+            delete reinterpret_cast<safe_VkValidationFlagsEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:
-                delete reinterpret_cast<safe_VkImageViewASTCDecodeModeEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:
+            delete reinterpret_cast<safe_VkImageViewASTCDecodeModeEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceASTCDecodeFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceASTCDecodeFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceConditionalRenderingFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:
-                delete reinterpret_cast<safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:
+            delete reinterpret_cast<safe_VkCommandBufferInheritanceConditionalRenderingInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineViewportWScalingStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineViewportWScalingStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkSwapchainCounterCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkSwapchainCounterCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:
-                delete reinterpret_cast<safe_VkPresentTimesInfoGOOGLE *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:
+            delete reinterpret_cast<safe_VkPresentTimesInfoGOOGLE *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineViewportSwizzleStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineViewportSwizzleStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDiscardRectanglePropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineDiscardRectangleStateCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineDiscardRectangleStateCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceConservativeRasterizationPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineRasterizationConservativeStateCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineRasterizationConservativeStateCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDepthClipEnableFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineRasterizationDepthClipStateCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkDebugUtilsMessengerCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkDebugUtilsMessengerCreateInfoEXT *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:
-                delete reinterpret_cast<safe_VkAndroidHardwareBufferUsageANDROID *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:
+            delete reinterpret_cast<safe_VkAndroidHardwareBufferUsageANDROID *>(header);
+            break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:
-                delete reinterpret_cast<safe_VkAndroidHardwareBufferFormatPropertiesANDROID *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:
+            delete reinterpret_cast<safe_VkAndroidHardwareBufferFormatPropertiesANDROID *>(header);
+            break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:
-                delete reinterpret_cast<safe_VkImportAndroidHardwareBufferInfoANDROID *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:
+            delete reinterpret_cast<safe_VkImportAndroidHardwareBufferInfoANDROID *>(header);
+            break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
 #ifdef VK_USE_PLATFORM_ANDROID_KHR
-            case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:
-                delete reinterpret_cast<safe_VkExternalFormatANDROID *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:
+            delete reinterpret_cast<safe_VkExternalFormatANDROID *>(header);
+            break;
 #endif // VK_USE_PLATFORM_ANDROID_KHR
 
-            case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkSamplerReductionModeCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkSamplerReductionModeCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceInlineUniformBlockFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceInlineUniformBlockPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:
-                delete reinterpret_cast<safe_VkWriteDescriptorSetInlineUniformBlockEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:
+            delete reinterpret_cast<safe_VkWriteDescriptorSetInlineUniformBlockEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkDescriptorPoolInlineUniformBlockCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:
-                delete reinterpret_cast<safe_VkSampleLocationsInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:
+            delete reinterpret_cast<safe_VkSampleLocationsInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:
-                delete reinterpret_cast<safe_VkRenderPassSampleLocationsBeginInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:
+            delete reinterpret_cast<safe_VkRenderPassSampleLocationsBeginInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineSampleLocationsStateCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineSampleLocationsStateCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceSampleLocationsPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceSampleLocationsPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineColorBlendAdvancedStateCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineCoverageToColorStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineCoverageToColorStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineCoverageModulationStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineCoverageModulationStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:
-                delete reinterpret_cast<safe_VkDrmFormatModifierPropertiesListEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:
+            delete reinterpret_cast<safe_VkDrmFormatModifierPropertiesListEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceImageDrmFormatModifierInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkImageDrmFormatModifierListCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkImageDrmFormatModifierListCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkImageDrmFormatModifierExplicitCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkImageDrmFormatModifierExplicitCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkShaderModuleValidationCacheCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkShaderModuleValidationCacheCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDescriptorIndexingFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDescriptorIndexingPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT:
-                delete reinterpret_cast<safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT:
+            delete reinterpret_cast<safe_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineViewportShadingRateImageStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineViewportShadingRateImageStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShadingRateImageFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShadingRateImageFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShadingRateImagePropertiesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShadingRateImagePropertiesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:
-                delete reinterpret_cast<safe_VkWriteDescriptorSetAccelerationStructureNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:
+            delete reinterpret_cast<safe_VkWriteDescriptorSetAccelerationStructureNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceRayTracingPropertiesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceRayTracingPropertiesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineRepresentativeFragmentTestStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceImageViewImageFormatInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceImageViewImageFormatInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkFilterCubicImageViewImageFormatPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkFilterCubicImageViewImageFormatPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkDeviceQueueGlobalPriorityCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkDeviceQueueGlobalPriorityCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:
-                delete reinterpret_cast<safe_VkImportMemoryHostPointerInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:
+            delete reinterpret_cast<safe_VkImportMemoryHostPointerInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceExternalMemoryHostPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderCorePropertiesAMD *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderCorePropertiesAMD *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:
-                delete reinterpret_cast<safe_VkDeviceMemoryOverallocationCreateInfoAMD *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:
+            delete reinterpret_cast<safe_VkDeviceMemoryOverallocationCreateInfoAMD *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineVertexInputDivisorStateCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineVertexInputDivisorStateCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_GGP
-            case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:
-                delete reinterpret_cast<safe_VkPresentFrameTokenGGP *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:
+            delete reinterpret_cast<safe_VkPresentFrameTokenGGP *>(header);
+            break;
 #endif // VK_USE_PLATFORM_GGP
 
-            case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkPipelineCreationFeedbackCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkPipelineCreationFeedbackCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMeshShaderFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMeshShaderFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMeshShaderPropertiesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMeshShaderPropertiesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderImageFootprintFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineViewportExclusiveScissorStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceExclusiveScissorFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceExclusiveScissorFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:
-                delete reinterpret_cast<safe_VkQueueFamilyCheckpointPropertiesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:
+            delete reinterpret_cast<safe_VkQueueFamilyCheckpointPropertiesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderIntegerFunctions2INTEL *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDevicePCIBusInfoPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDevicePCIBusInfoPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:
-                delete reinterpret_cast<safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:
+            delete reinterpret_cast<safe_VkDisplayNativeHdrSurfaceCapabilitiesAMD *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:
-                delete reinterpret_cast<safe_VkSwapchainDisplayNativeHdrCreateInfoAMD *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:
+            delete reinterpret_cast<safe_VkSwapchainDisplayNativeHdrCreateInfoAMD *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFragmentDensityMapFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFragmentDensityMapPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkRenderPassFragmentDensityMapCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkRenderPassFragmentDensityMapCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceScalarBlockLayoutFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMemoryBudgetPropertiesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceMemoryPriorityFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkMemoryPriorityAllocateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkMemoryPriorityAllocateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkBufferDeviceAddressCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkBufferDeviceAddressCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT:
-                delete reinterpret_cast<safe_VkImageStencilUsageCreateInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT:
+            delete reinterpret_cast<safe_VkImageStencilUsageCreateInfoEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkValidationFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkValidationFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceCooperativeMatrixFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceCooperativeMatrixPropertiesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:
-                delete reinterpret_cast<safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:
+            delete reinterpret_cast<safe_VkPhysicalDeviceCoverageReductionModeFeaturesNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:
-                delete reinterpret_cast<safe_VkPipelineCoverageReductionStateCreateInfoNV *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:
+            delete reinterpret_cast<safe_VkPipelineCoverageReductionStateCreateInfoNV *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *>(header);
+            break;
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:
-                delete reinterpret_cast<safe_VkSurfaceFullScreenExclusiveInfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:
+            delete reinterpret_cast<safe_VkSurfaceFullScreenExclusiveInfoEXT *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:
-                delete reinterpret_cast<safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:
+            delete reinterpret_cast<safe_VkSurfaceCapabilitiesFullScreenExclusiveEXT *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
 #ifdef VK_USE_PLATFORM_WIN32_KHR
-            case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:
-                delete reinterpret_cast<safe_VkSurfaceFullScreenExclusiveWin32InfoEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:
+            delete reinterpret_cast<safe_VkSurfaceFullScreenExclusiveWin32InfoEXT *>(header);
+            break;
 #endif // VK_USE_PLATFORM_WIN32_KHR
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceHostQueryResetFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceHostQueryResetFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *>(header);
+            break;
 
-            case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:
-                delete reinterpret_cast<safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *>(header);
-                break;
+        case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:
+            delete reinterpret_cast<safe_VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT *>(header);
+            break;
 
-            default:
-                assert(0);
-        }
+        default:
+            // Do nothing -- skip unrecognized sTypes
+            break;
     }
 }