Using Parameterized Classes and Factories: The Yin and Yang of Object-Oriented Verification