public static void Handle <T>(this Exception ex, Func <T, bool> predicate) where T : Exception
 {
     if (WithTypeSafe(predicate)(ex))
     {
         return;
     }
     throw ex;
 }
 public static void Handle <T>(this Exception ex, Action <T> action) where T : Exception => WithTypeSafe(action)(ex);