These benefits are particularly significant in statically typed languages such as Java and C# (where class behaviour cannot simply be modified at run-time) for improving the testability of the system by introducing ???seams??? [10], [11] to remove inappropriate coupling.