This is the framework for bug #8289.