A Unified Theory of Garbage Collection Teaching Garbage Collection without Implementing Compilers or Interpreters