public object Take()
{
if (!this.wasrejected && this.savequeue != null)
{
this.queues.Push(this.savequeue);
this.savequeue = null;
}
while (this.queues.Count > 0 && this.queues.Peek().Count == 0)
this.queues.Pop();
object message;
if (this.queues.Count > 0)
message = this.queues.Peek().Take();
else
message = this.queue.Take();
this.wasrejected = false;
return message;
}