Discovered a pointer which wasn't being deleted.
Deleting the pointer revealed another bug where shallow copies of an object was being created, but the shallow copies were sharing the same pointer memory location.
I have fixed this bug and all pointers are being deleted properly.