/*
Volatile: This variable does not prevent the datum from being
garbage collected. When it is, the variable becomes null.
*/
var/volatile/datum/VD
/*
Depend: When the linked object is deleted,
depending on the variable type, something happens:
Proc var: The proc throws an error
Object var: The object is deleted
Global var: throws an error to world.Error()
*/
var/depend/datum/DD
/*
The two can mix; the datum can garbage collect and kill its parent
*/
var/volatile/depend/datum/VDD
This can simplify some logic and help address memory leaks.
I won't go so far as to request that lists have types (eg datum-only list), but a list that can be guaranteed to have no nulls would be useful to prevent errors.