private void Dispose(Boolean disposing)
        {
            if (Interlocked.Exchange(ref disposed, 1) == 1)
            {
                return;
            }

            if (disposing)
            {
                messagesLock.ExecuteWriteLocked(() =>
                {
                    this.messages.Clear();
                });
            }
        }