Usando o Moq para definir indexadores em C #

Estou tendo problemas para descobrir como definirindexadores em C # com Moq. A documentação do Moq é fraca e eu fiz muitas pesquisas ... o que eu gostaria de fazer é semelhante na solução aComo Moq Definindo uma propriedade indexada:

var someClass = new Mock<ISomeClass>();
someClass.SetupSet(o => o.SomeIndexedProperty[3] = 25);

Eu quero modificar o acima para trabalhar com qualquer índice e qualquer valor, para que eu possa fazer algo assim:

someClass.Object.SomeIndexedProperty[1] = 5;

Atualmente, tenho o seguinte, o que funciona muito bem para o getter de propriedades indexadas, mas se eu definir o valor que Moq o ignora:

var someValues = new int[] { 10, 20, 30, 40 };
var someClass = new Mock<ISomeClass>();
someClass.Setup(o => o.SomeIndexedProperty[It.IsAny<int>()])
    .Returns<int>(index => someValues[index]);

// Moq doesn't set the value below, so the Assert fails!
someClass.Object.SomeIndexedProperty[3] = 25;
Assert.AreEqual(25, someClass.Object.SomeIndexedProperty[3]);