public bool Equals(Weak <T> x, Weak <T> y)
        {
            if (x.IsAlive && x.Target.Equals(y.Target))
            {
                return(true);
            }

            if (y.IsAlive && y.Target.Equals(x.Target))
            {
                return(true);
            }

            return(false);
        }
 public int GetHashCode(Weak <T> obj)
 {
     return(obj.IsAlive
         ? obj.Target.GetHashCode()
         : 0);
 }