how should it work?:
when GC finds class instance which is good to be collected, it calls special function on this instance:
bool good_to_collect(). if function returns true, then on next pass GC cleanups object without calling to
good_to_collect(). if function returns false, then GC does nothing with object and continues periodically asking object if it's ready to be collected.
good_to_collect() it self can be used by App, to perform cleanups, for instance destroy dependent objects.