protected virtual void Dispose(bool disposing) { if (impl != null) { impl.Dispose(); impl = null; } }