protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_reader != null)
                {
                    _reader.Dispose();
                    _reader = null;
                }

                if (_input != null)
                {
                    _input.Dispose();
                    _input = null;
                }

                if (_ownedSession != null)
                {
                    _ownedSession.Dispose();
                    _ownedSession = null;
                }
            }

            base.Dispose(disposing);
        }