public virtual void Dispose()
{
if (IsDisposed)
return;
if (Disposed != null)
Disposed (this, EventArgs.Empty);
disposed = true;
if (frontend != null)
frontend.Dispose ();
frontend = null;
if (wrapped != null)
wrappers.Remove (GetIndentityObject (wrapped));
System.Runtime.Remoting.RemotingServices.Disconnect (this);
}