Two labelled transition systems feeding each other
Transducers, or finite automata with output, are very powerful when they can be iterated. After all a step of a Turing machine on a tape (or better a instantaneous description, with the state assumed to be marked on the tape) is just a simple local rewrite, and iterating that is a computation.

With two transducers $T_M$ and $T_e$ we can mimick that iteration. Assume $T_e$ just echos what it reads. $T_M$ starts on empty input by writing the initial configuration and marker $\#w_0$, which it then gets as input via $T_e$. Then $T_M$ computes the next configuration of TM $M$ and writes $\#w_2$, etcetera. In that way $T_M$ writes a complete computation of $M$ in the form $\#w_1\#w_2\#w_3\dots$. If TM $M$ cleans its tape before halting, and if $T_M$ stops (and accepts) when it reads empty tape with halting state of $M$, the system has a halting computation iff the TM has one. Quite powerful.

In a simpler example $T$ gets a string $a^n\#$ as input. If $n$ is even it halves $n$ and outputs $a^{n/2}\#$, if $n$ is odd $T$ blocks (halts in a negative state, or runs off in a never halting sequence of epsilon moves), except when $n$ equals $1$, then it will accept and halt. Observe that when the output if $T$ is fed back as input, the system will only halt when the initial value of $n$ was a power of two.

In fact, what is obtained is a so-called fixed point language of the transducer $T$: strings $w$ such that $T$ writes $T$ on input $w$.
If I recall well, the fixed point languages of `rational functions' (finite state transducers that are not necessarily deterministic, but have only one output on a given string) are co-context-free, complements of context-free languages.
Prefix and equality languages of rational functions are co-context-free, Information Processing Letters, 1988, 
doi:10.1016/0020-0190(88)90167-6,