popTryContext() {
    const context = this.tryContext;

    this.tryContext = context.upper;

    if (context.position === 'catch') {
      // Merges two paths from the `try` block and `catch` block merely.
      this.popForkContext();
      return;
    }

    /*
     * The following process is executed only when there is the `finally`
     * block.
     */

    const returned = context.returnedForkContext;
    const thrown = context.thrownForkContext;

    if (returned.empty && thrown.empty) {
      return;
    }

    // Separate head to normal paths and leaving paths.
    const headSegments = this.forkContext.head;

    this.forkContext = this.forkContext.upper;
    const normalSegments = headSegments.slice(0, (headSegments.length / 2) | 0);
    const leavingSegments = headSegments.slice((headSegments.length / 2) | 0);

    // Forwards the leaving path to upper contexts.
    if (!returned.empty) {
      getReturnContext(this).returnedForkContext.add(leavingSegments);
    }
    if (!thrown.empty) {
      getThrowContext(this).thrownForkContext.add(leavingSegments);
    }

    // Sets the normal path as the next.
    this.forkContext.replaceHead(normalSegments);

    /*
     * If both paths of the `try` block and the `catch` block are
     * unreachable, the next path becomes unreachable as well.
     */
    if (!context.lastOfTryIsReachable && !context.lastOfCatchIsReachable) {
      this.forkContext.makeUnreachable();
    }
  }
Pops the last context of TryStatement and finalizes it.
@returns {void}