I'm not sure what you mean by "both sides of the original".
Essentially I just have a function which is called at various times. It removes the object from the list it's in, and then evaluates a few conditions, before placing it in a new list and storing the link within the object. The conditions should never fail, so it should never fail to be in at least one list, and I have it set to throw a runtime error if this should ever happen, just to be sure that it doesn't.
EDIT: I use the same Link field to store the TLink, regardless of which TList the object is placed in. That shouldn't be a problem, should it? The TLink knows what TList it relates to. I specifically chose TLists over TMaps because I wanted the ability to remove an object from a container without necessarily knowing which container it's in.
Essentially I just have a function which is called at various times. It removes the object from the list it's in, and then evaluates a few conditions, before placing it in a new list and storing the link within the object. The conditions should never fail, so it should never fail to be in at least one list, and I have it set to throw a runtime error if this should ever happen, just to be sure that it doesn't.
EDIT: I use the same Link field to store the TLink, regardless of which TList the object is placed in. That shouldn't be a problem, should it? The TLink knows what TList it relates to. I specifically chose TLists over TMaps because I wanted the ability to remove an object from a container without necessarily knowing which container it's in.