/** * We use the BSF algorithm to check for circular dependencies. * ESLint also uses it https://github.com/import-js/eslint-plugin-import/blob/main/src/rules/no-cycle.js * It is well described on https://en.wikipedia.org/wiki/Breadth-first_search */