This has made the tolerance even less: `< start+200` is stricter than `< start+500`. I'd write something like:

        long start = System.currentTimeMillis();
        LanguageUtils.repeatUntilSuccess(period: 1*TimeUnit.MILLISECONDS, timeout: 5000*TimeUnit.MILLISECONDS) { 
            System.currentTimeMillis() > start+50 
        }
        long time = System.currentTimeMillis() - start;
        assertTrue(time >= 50, "time="+time);
        assertTrue(time <= 1000, "time="+time);