/// <inheritdoc/> public void Refresh(object newObjectValue) { if (!(newObjectValue is IEnumerable)) { throw new ArgumentException(@"The object is not an IEnumerable", nameof(newObjectValue)); } ObjectValue = newObjectValue; references.Clear(); references.AddRange( IsDictionary ? ((IEnumerable)ObjectValue).Cast <object>().Select(x => (ObjectReference)Reference.CreateReference(GetValue(x), elementType, GetKey(x))) : ((IEnumerable)ObjectValue).Cast <object>().Select((x, i) => (ObjectReference)Reference.CreateReference(x, elementType, i))); indices.Clear(); foreach (var reference in references) { indices.Add(reference.Index); } }