visitTree = (node, parent, scope, config, traversalContext) => {
    if (!node?.type || isStopped) {
      return;
    }

    const { hasPreparedTree = false } = config || {};

    const { swcPath } = handlePathAndScope(node, parent, scope, hasPreparedTree, traversalContext);
    visit(swcPath, visitor, traversalContext);
    loopChildren({ node }, ({ child }) => {
      visitTree(child, node, swcPath.scope, config, traversalContext);
    });
  }
@param {SwcNode} node
@param {SwcNode|null} parent
@param {SwcScope} scope
@param {{hasPreparedTree?: boolean;}} config
@param {SwcTraversalContext} traversalContext