public static <T extends Throwable> ValidationInfo validate(JComponent component, ThrowableRunnable<T> runnable) {
    try {
      runnable.run();
      return new ValidationInfo("", component);
    }
    catch (ProcessCanceledException e) {
      throw e;
    }
    catch (Throwable t) {
      return new ValidationInfo(t.getMessage(), component);
    }
  }
public static <T extends Throwable> ValidationInfo validate(JComponent component, ThrowableRunnable<T> runnable)