I have a strange problem with my code where running ExpressionObserver.Execute(() => Target.Name) gives a different value than just compiling and executing the expression itself.
The problem goes away when I comment out all of the carrousel "cache" code and let it just return the newItem every time. Basically, all lines but the search key creation and this next line are commented out and it works.
var newItem = creator((Int32)searchKey.First, key);
I'll try isolating the code into a unit test, but if anyone has any ideas where things might be going wrong, I'd be happy to hear them.