public static boolean isCompatibleWithThrowsClause(Throwable ex, Class<?>... declaredExceptions) {
      if (!isCheckedException(ex)) {
         return true;
      }
      if (declaredExceptions != null) {
         for (Class<?> declaredException : declaredExceptions) {
            if (declaredException.isInstance(ex)) {
               return true;
            }
         }
      }
      return false;
   }