public override void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            base.Dispose();

            self.Remove();
            self = null;
            bg   = null;
            bar  = null;
        }