### Question:
Tick implements Updatable { public void addAction(TickAction action, long tickDelay) { toAdd.add(new TickActionDelayed(action, currentTicks + tickDelay)); } Tick(); void addAction(TickAction action, long tickDelay); void start(); void stop(); void restart(); void pause(); void resume(); boolean elapsed(long tick); boolean elapsedTime(int rate, long milli); long elapsed(); void set(long value); boolean isStarted(); @Override void update(double extrp);  }### Answer:
@Test void testAddAction() { final AtomicBoolean action = new AtomicBoolean(); tick.addAction(() -> action.set(true), 2L); assertFalse(action.get()); tick.start(); assertFalse(action.get()); tick.update(1.0); assertFalse(action.get()); tick.update(1.0); assertTrue(action.get()); }
@Test void testAddActionNull() { assertThrows(() -> tick.addAction(null, 0L), Check.ERROR_NULL); }