/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if (_isDisposed) { return; } if (disposing) { if (null != controller) { controller.Dispose(); } if (null != tree) { tree.Dispose(); } } _isDisposed = true; }