onCodePathEnd(codePath) {
				const isDerivedClass = funcInfo.hasExtends;

				funcInfo = funcInfo.upper;
				if (!isDerivedClass) {
					return;
				}

				/**
				 * A collection of nodes to avoid duplicate reports.
				 * @type {Set<ASTNode>}
				 */
				const reported = new Set();

				codePath.traverseSegments((segment, controller) => {
					const info = segInfoMap[segment.id];
					const invalidNodes = info.invalidNodes.filter(
						/*
						 * Avoid duplicate reports.
						 * When there is a `finally`, invalidNodes may contain already reported node.
						 */
						node => !reported.has(node),
					);

					for (const invalidNode of invalidNodes) {
						reported.add(invalidNode);

						context.report({
							messageId: "noBeforeSuper",
							node: invalidNode,
							data: {
								kind:
									invalidNode.type === "Super"
										? "super"
										: "this",
							},
						});
					}

					if (info.superCalled) {
						controller.skip();
					}
				});
			}
Removes the top of stack item.

And this traverses all segments of this code path then reports every
invalid node.
@param {CodePath} codePath A code path which was ended.
@returns {void}