Too Long; Didn't Read
An example on how to convert a legacy design into a better one. How to Decouple a legacy system? Decoupling the system is a vicious circle. The solution to this deadlock is to write the tests declaratively, thus generating better interfaces. We write tests to cover pre-existing functionality before making any changes. The class name does not represent a real name in the bijection. It is a very implemental invocation (coupled to getInstance()) and not very declarative.