private void handleTailRecursion() {
    while (nextFunction != NextFunction.DONE) {
      switch (nextFunction) {
        case LIVE_IN_AT_STATEMENT:
          nextFunction = NextFunction.DONE;
          liveInAtStatement();
          break;

        case LIVE_OUT_AT_STATEMENT:
          nextFunction = NextFunction.DONE;
          liveOutAtStatement();
          break;

        case LIVE_OUT_AT_BLOCK:
          nextFunction = NextFunction.DONE;
          liveOutAtBlock();
          break;

        default:
      }
    }
  }
The algorithm in Appel is presented in partial tail-recursion form. Obviously, that's not
efficient in java, so this function serves as the dispatcher instead.
android/android_framework/dex-maker/src/main/java/com/android/dx/ssa/back/LivenessAnalyzer.java