private static void ExecuteAssertion(Internals.Assertions.IAssertion assertion, Func<string> customMessage)
 {
     try
     {
         if (assertion.IsSatisfied()) return;
     }
     catch (ArgumentException ex)
     {
         throw new ShouldAssertException(ex.Message, ex);
     }
     throw new ShouldAssertException(assertion.GenerateMessage(customMessage()));
 }