/// <summary>
 /// Determines whether the specified Object is equal to the current Object.
 /// </summary>
 /// <param name="obj">
 /// The Object to compare with the current Object.
 /// </param>
 /// <returns>
 /// true if the specified Object is equal to the current Object;
 /// otherwise, false.
 /// </returns>
 public override bool Equals(object obj)
 {
     try {
         if (obj is IntPtr)
         {
             return(ShellAPI.ILIsEqual(this.Ptr, (IntPtr)obj));
         }
         if (obj is PIDL)
         {
             return(ShellAPI.ILIsEqual(this.Ptr, ((PIDL)obj).Ptr));
         }
         else
         {
             return(false);
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }