class FixedStepGameLoop extends GameLoop {

  /**
   * 20 ms per frame = 50 FPS.
   */
  private static final long MS_PER_FRAME = 20;

  @Override
  protected void processGameLoop() {<FILL_FUNCTION_BODY>}

  protected void update() {
    controller.moveBullet(0.5f * MS_PER_FRAME / 1000);
  }
}

    var previousTime = System.currentTimeMillis();
    var lag = 0L;
    while (isGameRunning()) {
      var currentTime = System.currentTimeMillis();
      var elapsedTime = currentTime - previousTime;
      previousTime = currentTime;
      lag += elapsedTime;

      processInput();

      while (lag >= MS_PER_FRAME) {
        update();
        lag -= MS_PER_FRAME;
      }

      render();
    }
  
<methods>public boolean isGameRunning() ,public void run() ,public void stop() <variables>protected final non-sealed com.iluwatar.gameloop.GameController controller,protected final Logger logger,protected volatile com.iluwatar.gameloop.GameStatus status