OK, I see. But now listen to my story
I am visualizing conceptual graphs (CGs) (a kind of semantic networks used for knowledge representation). CGs contail concepts (rectangles) and relations (ovals). These can be connected with arrows (links) but it is possible to have free concepts. For example, the concept [student] means that there is an entity called student. [student: #Fotis] is an individual who is student. The CG: [Cat]->(on)->[Mat] says that some cat is on the mat. When I delete the relation (on) I want concepts [Cat] and [Mat] to stay on place. And the story goes like this. So, in my app, being able to have orphans is vital. Since I use TSimpleGraph for the visual part, It is clear that in my objects (concepts, relations, arrows, CGs) I use the kind of lists you requested for traversing my graphs, preventing deletion of objects, joining graphs, etc.
So, we have reached a point that personal requirements lead each one at different direction. In such cases the library either gets specialized by following one's requirements, or stays general enough (i.e. library) to satisfy both, at least in the base level.
I had understood that you had some reason for requesting something like this but you insisted on the iplementation issues without mentioning the reason. To be honest, I red your long post above very very quickly because I had understood your claims and I was trying to derive the reason.
For me, not allowing orphans is very application specific. TSimpleGraph is, more that anything else, a component for drawing graphs. Look at MSDraw, MSVision, Corel, etc. In all drawing apps, having an object laying on the canvas is common.
Anyway, I think the discussion was fruitful with reasonable input from both sides and Kambiz will judge with facts on how to go on.
Fotis