bundles/org.eclipse.orion.client.javascript/web/eslint/lib/code-path-analysis/code-path-state.js
function() {
			var context = this.switchContext;

			this.switchContext = context.upper;

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

			if (context.countForks === 0) {

				/*
				 * When there is only one `default` chunk and there is one or more
				 * `break` statements, even if forks are nothing, it needs to merge
				 * those.
				 */
				if (!brokenForkContext.empty) {
					brokenForkContext.add(forkContext.makeNext(-1, -1));
					forkContext.replaceHead(brokenForkContext.makeNext(0, -1));
				}

				return;
			}

			var lastSegments = forkContext.head;

			this.forkBypassPath();
			var lastCaseSegments = forkContext.head;

			/*
			 * `brokenForkContext` is used to make the next segment.
			 * It must add the last segment into `brokenForkContext`.
			 */
			brokenForkContext.add(lastSegments);

			/*
			 * A path which is failed in all case test should be connected to path
			 * of `default` chunk.
			 */
			if (!context.lastIsDefault) {
				if (context.defaultBodySegments) {

					/*
					 * Remove a link from `default` label to its chunk.
					 * It's false route.
					 */
					removeConnection(context.defaultSegments, context.defaultBodySegments);
					makeLooped(this, lastCaseSegments, context.defaultBodySegments);
				} else {

					/*
					 * It handles the last case body as broken if `default` chunk
					 * does not exist.
					 */
					brokenForkContext.add(lastCaseSegments);
				}
			}

			// Pops the segment context stack until the entry segment.
			for (var i = 0; i < context.countForks; ++i) {
				this.forkContext = this.forkContext.upper;
			}

			/*
			 * Creates a path from all brokenForkContext paths.
			 * This is a path after switch statement.
			 */
			this.forkContext.replaceHead(brokenForkContext.makeNext(0, -1));
		}
function() {
			var context = this.switchContext;

			this.switchContext = context.upper;

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

			if (context.countForks === 0) {

				/*
				 * When there is only one `default` chunk and there is one or more
				 * `break` statements, even if forks are nothing, it needs to merge
				 * those.
				 */
				if (!brokenForkContext.empty) {
					brokenForkContext.add(forkContext.makeNext(-1, -1));
					forkContext.replaceHead(brokenForkContext.makeNext(0, -1));
				}

				return;
			}

			var lastSegments = forkContext.head;

			this.forkBypassPath();
			var lastCaseSegments = forkContext.head;

			/*
			 * `brokenForkContext` is used to make the next segment.
			 * It must add the last segment into `brokenForkContext`.
			 */
			brokenForkContext.add(lastSegments);

			/*
			 * A path which is failed in all case test should be connected to path
			 * of `default` chunk.
			 */
			if (!context.lastIsDefault) {
				if (context.defaultBodySegments) {

					/*
					 * Remove a link from `default` label to its chunk.
					 * It's false route.
					 */
					removeConnection(context.defaultSegments, context.defaultBodySegments);
					makeLooped(this, lastCaseSegments, context.defaultBodySegments);
				} else {

					/*
					 * It handles the last case body as broken if `default` chunk
					 * does not exist.
					 */
					brokenForkContext.add(lastCaseSegments);
				}
			}

			// Pops the segment context stack until the entry segment.
			for (var i = 0; i < context.countForks; ++i) {
				this.forkContext = this.forkContext.upper;
			}

			/*
			 * Creates a path from all brokenForkContext paths.
			 * This is a path after switch statement.
			 */
			this.forkContext.replaceHead(brokenForkContext.makeNext(0, -1));
		}
function ( ) { var context = this . switchContext ; this . switchContext = context . upper ; var forkContext = this . forkContext ; var brokenForkContext = this . popBreakContext ( ) . brokenForkContext ; if ( context . countForks === 0 ) { /*
				 * When there is only one `default` chunk and there is one or more
				 * `break` statements, even if forks are nothing, it needs to merge
				 * those.
				 */ if ( ! brokenForkContext . empty ) { brokenForkContext . add ( forkContext . makeNext ( - 1 , - 1 ) ) ; forkContext . replaceHead ( brokenForkContext . makeNext ( 0 , - 1 ) ) ; } return ; } var lastSegments = forkContext . head ; this . forkBypassPath ( ) ; var lastCaseSegments = forkContext . head ; /*
			 * `brokenForkContext` is used to make the next segment.
			 * It must add the last segment into `brokenForkContext`.
			 */ brokenForkContext . add ( lastSegments ) ; /*
			 * A path which is failed in all case test should be connected to path
			 * of `default` chunk.
			 */ if ( ! context . lastIsDefault ) { if ( context . defaultBodySegments ) { /*
					 * Remove a link from `default` label to its chunk.
					 * It's false route.
					 */ removeConnection ( context . defaultSegments , context . defaultBodySegments ) ; makeLooped ( this , lastCaseSegments , context . defaultBodySegments ) ; } else { /*
					 * It handles the last case body as broken if `default` chunk
					 * does not exist.
					 */ brokenForkContext . add ( lastCaseSegments ) ; } } // Pops the segment context stack until the entry segment. for ( var i = 0 ; i < context . countForks ; ++ i ) { this . forkContext = this . forkContext . upper ; } /*
			 * Creates a path from all brokenForkContext paths.
			 * This is a path after switch statement.
			 */ this . forkContext . replaceHead ( brokenForkContext . makeNext ( 0 , - 1 ) ) ; }
Pops the last context of SwitchStatement and finalizes it.

- Disposes all forking stack for `case` and `default`.
- Creates the next code path segment from `context.brokenForkContext`.
- If the last `SwitchCase` node is not a `default` part, creates a path
to the `default` body.

@returns {void}
Pops the last context of SwitchStatement and finalizes it .