public void VerifyThatArgumentOutOfRangeIsThrownWhenIndexIsOutOfRange()
{
var list = new OrderedItemList<Thing>(this.person, false);
EmailAddress email;
Assert.Throws<ArgumentOutOfRangeException>(() => email = (EmailAddress)list[-1]);
email = new EmailAddress(Guid.NewGuid(), null, null);
list.Add(email);
var invalidIndex = list.Count;
Assert.Throws<ArgumentOutOfRangeException>(() => email = (EmailAddress)list[invalidIndex]);
Assert.Throws<ArgumentOutOfRangeException>(() => list[-1] = email);
Assert.Throws<ArgumentOutOfRangeException>(() => list[invalidIndex] = email);
}