function CodePath(id,upper,onLooped){_classCallCheck(this,CodePath);/**
         * The identifier of this code path.
         * Rules use it to store additional information of each rule.
         * @type {string}
         */this.id=id;/**
         * The code path of the upper function scope.
         * @type {CodePath|null}
         */this.upper=upper;/**
         * The code paths of nested function scopes.
         * @type {CodePath[]}
         */this.childCodePaths=[];// Initializes internal state.
Object.defineProperty(this,"internal",{value:new CodePathState(new IdGenerator(id+"_"),onLooped)});// Adds this into `childCodePaths` of `upper`.
if(upper){upper.childCodePaths.push(this);}}
@param {string} id - An identifier.
@param {CodePath|null} upper - The code path of the upper function scope.
@param {Function} onLooped - A callback function to notify looping.