  Given a simple recursive function, we show how to extract two interacting
processes from it. The two processes can be described by means of iterative
programs, one of which is intrinsically reversible, in a language that, up to
minor details, belongs to the core of widely used imperative programming
languages. We implement the two processes as interleaving synchronous JAVA
threads whose interaction is equivalent to the recursive function they are
extracted from.
