Index: src/examples/strings/bug-repro/double_arrow.c
===================================================================
--- src/examples/strings/bug-repro/double_arrow.c	(revision 8243cf980d377d53418335448dbfd63ae96ba812)
+++ src/examples/strings/bug-repro/double_arrow.c	(revision 8243cf980d377d53418335448dbfd63ae96ba812)
@@ -0,0 +1,15 @@
+struct test
+{
+	test* next;
+};
+
+int main(int argc, char* argv[])
+{
+	test t1;
+	test t2;
+	test t3;
+
+	test* pt = &t1;
+	pt->next = &t2;
+	pt->next->next = &t3;
+}
Index: src/examples/strings/src/internal/VbyteSM.c
===================================================================
--- src/examples/strings/src/internal/VbyteSM.c	(revision 7ea1b3a70e576122a2e7e2c28855020d76218169)
+++ src/examples/strings/src/internal/VbyteSM.c	(revision 8243cf980d377d53418335448dbfd63ae96ba812)
@@ -1,1 +1,39 @@
 #include "VbyteSM.h" 
+#include "tools.h"
+
+void AddThisAfter(HandleNode_t* const this, HandleNode_t* n)
+{
+	this->next = n->next;
+	this->previous = n;
+	HandleNode_t* n_next = n->next;
+	n_next->previous = this;
+	n->next = this;
+}
+
+void DeleteNode(HandleNode_t* const this)
+{
+	HandleNode_t* next = this->next;
+	HandleNode_t* prev = this->previous;
+
+	next->previous = prev;
+	prev->next = next;
+}
+
+void MoveThisAfter(HandleNode_t* const this, const HandleNode_t* rhs)
+{
+	assertf( this->string < rhs->string, 
+	"VbyteSM: Error - Cannot move byte string starting at: %lX after byte string starting at: %lX and keep handles in ascending order",
+	(unsigned long int)this->string, 
+	(unsigned long int)rhs->string);
+
+	HandleNode_t* i;
+	for(i = rhs->next; 
+	    i->string && this->string > i->string; 
+	    i = i->next );
+
+	if( this != i->previous )
+	{
+		DeleteNode(this);
+		AddThisAfter(this, i->previous);
+	}
+}
Index: src/examples/strings/src/internal/VbyteSM.h
===================================================================
--- src/examples/strings/src/internal/VbyteSM.h	(revision 7ea1b3a70e576122a2e7e2c28855020d76218169)
+++ src/examples/strings/src/internal/VbyteSM.h	(revision 8243cf980d377d53418335448dbfd63ae96ba812)
@@ -1,3 +1,5 @@
 #pragma once
+
+#include <stdlib>
 
 typedef char char_t;
@@ -14,8 +16,4 @@
 	HandleNode_t* previous;
 };
-
-static inline void ctor(HandleNode_t* const this);
-static inline void ctor(HandleNode_t* const this, VbyteHeap_t* heap);
-static inline void dtor(HandleNode_t* const this);
 
 void DeleteNode(HandleNode_t* const this);
@@ -40,7 +38,4 @@
 	HandleNode_t Header;
 };
-
-static inline void ctor(VbyteHeap* const this, int size);
-static inline void dtor(VbyteHeap* const this);
 
 void compaction(VbyteHeap* const this);
@@ -84,5 +79,5 @@
 	this->ExtVbyte = (void*)( this->StartVbyte + this->CurrSize );
 
-	ctor(&this->Header);
+	ctor((HandleNode_t* const)&this->Header);
 	this->Header.next = &this->Header;
 	this->Header.previous = &this->Header;
