code: public static Cleaner create(Object ob, Runnable thunk) {
          if (thunk == null) {
              return null;
          }
          Cleaner cleaner = new Cleaner(thunk);
          setAssociated(ob, cleaner);
          return cleaner;
      }
docs: Creates a new cleaner.
  
  @param  thunk
  The cleanup code to be run when the cleaner is invoked.  The
  cleanup code is run directly from the reference-handler thread,
  so it should be as simple and straightforward as possible.
  
  @return  The new cleaner