code: public PhantomReference<T> register(T object, Action0 leakCallback) {
          PhantomReference<T> ref = new PhantomReference<>(object, referenceQueue);
          registeredMap.put(ref, leakCallback);
          return ref;
      }
docs: Register a tracked object. When the tracked object is released, you must call the clear method of the LeakDetector.
  
  @param object       The tracked object
  @param leakCallback When the garbage collector cleans up the tracked object, if the tracked object is not released,
  that means the tracked object has leaked. The detector will execute the action.
  @return a new PhantomReference that tracks the object