static O evalWithTimeoutOrException(fO f, int timeoutMS) { ret evalWithTimeoutOrException(timeoutMS, f); } static O evalWithTimeoutOrException(int timeoutMS, fO f) { ret eitherAOpt(evalWithTimeout(timeoutMS, f)); } static O evalWithTimeoutOrException(double timeoutSeconds, fO f) { ret eitherAOpt(evalWithTimeout(timeoutSeconds, f)); } static A evalWithTimeoutOrException(int timeoutMS, F0 f) { Either e = evalWithTimeout(timeoutMS, f); if (e.isA()) ret e.a; fail("Timeout after " + timeoutMS + " ms"); } static A evalWithTimeoutOrException(double timeoutSeconds, F0 f) { ret evalWithTimeoutOrException(toMS(timeoutSeconds), f); }