Consider the two code samples shown in Figure 3, which are extracted from real applications. The code example in Figure 3a attempts to modify the contents of a database through the method call Statement.executeUpdate (line 1.9), whereas the code example in Figure 3b attempts to read the contents of a database through the method call Statement.executeQuery (line 2.8). A simple specification in the form of an association rule “Connection creation ⇒ Connection rollback” indicates that a rollback method call should occur in exception paths whenever an object of Connection is created. However, this form of specification is not a real rule since the rollback method call should be invoked only when changes are made to the database.