code: public void addFinalizer(Object referent, Runnable cleanup)
      {
          requireNonNull(referent, "referent is null");
          requireNonNull(cleanup, "cleanup is null");
          finalizers.add(new FinalizerReference(referent, finalizerQueue, cleanup));
      }
docs: When referent is freed by the garbage collector, run cleanup.
  <p>
  Note: cleanup must not contain a reference to the referent object.