popLoopContext() {
    const context = this.loopContext;

    this.loopContext = context.upper;

    const forkContext = this.forkContext;
    const brokenForkContext = this.popBreakContext().brokenForkContext;

    // Creates a looped path.
    switch (context.type) {
      case 'WhileStatement':
      case 'ForStatement':
        this.popChoiceContext();
        makeLooped(this, forkContext.head, context.continueDestSegments);
        break;

      case 'DoWhileStatement': {
        const choiceContext = this.popChoiceContext();

        if (!choiceContext.processed) {
          choiceContext.trueForkContext.add(forkContext.head);
          choiceContext.falseForkContext.add(forkContext.head);
        }
        if (context.test !== true) {
          brokenForkContext.addAll(choiceContext.falseForkContext);
        }

        // `true` paths go to looping.
        const segmentsList = choiceContext.trueForkContext.segmentsList;

        for (let i = 0; i < segmentsList.length; ++i) {
          makeLooped(this, segmentsList[i], context.entrySegments);
        }
        break;
      }

      case 'ForInStatement':
      case 'ForOfStatement':
        brokenForkContext.add(forkContext.head);
        makeLooped(this, forkContext.head, context.leftSegments);
        break;

      /* c8 ignore next */
      default:
        throw new Error('unreachable');
    }

    // Go next.
    if (brokenForkContext.empty) {
      forkContext.replaceHead(forkContext.makeUnreachable(-1, -1));
    } else {
      forkContext.replaceHead(brokenForkContext.makeNext(0, -1));
    }
  }
Pops the last context of a loop statement and finalizes it.
@throws {Error} (Unreachable - unknown type.)
@returns {void}