Did you intend to move the curly brace up and close this catch block here? Having this closed here makes the "if (!exceptionThrownAndAsserted)" conditional not necessary. Furthermore this entire try/catch/finally has become a bit convoluted over time I think. It seems like we could just catch the exception, copy its reference to 'thrownException', re-throw it (and posslby with just 'throw' rather than 'throw thrownException' to preserve the stack? Or maybe that was delibrate) and have 'spec.Value()' invoked in the finally block.