3 days later I finally found / fixed the bug.
Why did it take me so long? because it wasn't my bug.
It was a bug in the latest released, version of the .NET GarbageCollection.
In theory, if managed objects only have a circular reference to each other but no one outside of .NET is referencing any of the MOs, GC is supposed to clean it up.
Latest version... not so much.
If your MO circular references happen to go more than 5 levels deep
Memory Leak!
@XSGeek Curses! Or should I say recurses!