**CMP:** What's a good way to implement a garbage collector?
(I'm planning a language that'll have a GC; my current plan is to have a `numRefs` field in every object and have a `decrementNumRefs` method that decrements the field and, if the object has 0 refs, deletes it and calls `decrementNumRefs` on the object's other fields. The method would originally be called when a variable is reassigned/goes out of scope. That sounds too simple, though, and I haven't done any research on GCs, so I want y'all to do free work for me /s /s)