* @param code
* The code to be run in a different date and time
* @return The result of running the given code
*/
public <T> T andExecute(Block<T> code) {
MillisProvider provider = getCurrentTimeMillisProvider();
DateTimeUtils.setCurrentMillisFixed(somewhereInTime.getMillis());
try {
return code.run();
} finally {
DateTimeUtils.setCurrentMillisProvider(provider);