Хотя я не смог разрешить свою циклическую зависимость, я по крайней мере остановился на решении, как создать свою систему, содержащую эту циклическую зависимость.
Я изменил все свои классы состояний, чтобы не брать их точки выхода вконструкторы, но через метод, который в основном выдает исключение, если оно вызывается во второй раз.
Затем я представил класс построителя, который будет создавать каждое состояние в моем автомате состояний, а затем настраивать их соединения для передачи состояний, используя метод, описанный выше.Поэтому, как только сборщик возвращает конечный автомат, он полностью настроен и готов к использованию.Точки выхода каждого состояния больше не могут быть изменены, потому что методы для их установки будут вызывать исключения, если они вызваны, так как конструктор вызывал их уже один раз при создании конечного автомата.
Спасибо всем за помощьмне по этому вопросу.