We have several places in our code, where we have code to prevent recursion. Thomas created therefore a special CA, but personally I was not fond of, since it invented major stack operations with each call verifying or instantiating a project. I did in the merge an alternate implementation, that also is capable of returning the stack in case of failure. Unfortunately this code is currently copied three times. This should be extracted into a little utility and also made thread-safe as Thomas' implementation was.
Done. Konstantin, have a look at the CyclicDependeny test cases. You might chose another guard for hibernate. The current one realizes the old behaviour though.