public void Stash()
{
var currMsg = _actorCell.CurrentMessage;
var sender = _actorCell.Sender;
if (_actorCell.CurrentEnvelopeId == _currentEnvelopeId)
{
throw new IllegalActorStateException(string.Format("Can't stash the same message {0} more than once", currMsg));
}
_currentEnvelopeId = _actorCell.CurrentEnvelopeId;
if(_capacity <= 0 || _theStash.Count < _capacity)
_theStash.AddLast(new Envelope() { Message = currMsg, Sender = sender });
else throw new StashOverflowException(string.Format("Couldn't enqueue message {0} to stash of {1}", currMsg, _actorCell.Self));
}