constructor(name, enterName, exitName, isMacroNode, buildParam) {
        this.name = name
        this.enterName = enterName
        this.exitName = exitName
        this.isMacroNode = isMacroNode
        this.buildParam = buildParam
        this.hasListener = Boolean(
          visitor[this.enterName] || visitor[this.exitName]
        )
        this.paramsMap = new Map()
      }
@param {string} name
@param {string} enterName
@param {string} exitName
@param {(candidateMacro: Expression | null, node: CallExpression) => boolean} isMacroNode
@param {(context: RuleContext, node: CallExpression) => unknown} buildParam