public void Dispose(WeakReference <T> obj)
 {
     if (obj.TryGetTarget(out var value))
     {
         _policy.Dispose(value);
     }
 }
 public override void Return(T obj)
 {
     _disposePolicy.Dispose(obj);
 }