didnt read the whole comments; so sorry, if duplicate.
After a short review of the add function for handling of complex structs i found a possible bug as they miss to perform a deep copy of objects containing references to other objects. they would only copy the value of the pointers of a struct like that: struct { obj* ptr; } and not the content of ptr.