Buggy code:
public void setBigDecimal ( int parameterIndex , BigDecimal x ) throws SqlException { } public void setDate ( int parameterIndex , Date x ) throws SqlException { } public void setDate ( int parameterIndex , Date x , Calendar calendar ) throws SqlException { } public void setTime ( int parameterIndex , Time x ) throws SqlException { } public void setTime ( int parameterIndex , Time x , Calendar calendar ) throws SqlException { } public void setTimestamp ( int parameterIndex , Timestamp x ) throws SqlException { } public void setTimestamp ( int parameterIndex , Timestamp x , Calendar calendar ) throws SqlException { } public void setString ( int parameterIndex , String x ) throws SqlException { } void setStringX ( int parameterIndex , String x ) throws SqlException { } public void setBytes ( int parameterIndex , byte [ ] x ) throws SqlException { } public void setBytesX ( int parameterIndex , byte [ ] x ) throws SqlException { } public void setBinaryStream ( int parameterIndex , InputStream x , int length ) throws SqlException { } public void setBinaryStreamX ( int parameterIndex , InputStream x , int length ) throws SqlException { } public void setAsciiStream ( int parameterIndex , InputStream x , int length ) throws SqlException { } public void setUnicodeStream ( int parameterIndex , InputStream x , int length ) throws SqlException { } public void setCharacterStream ( int parameterIndex , Reader x , int length ) throws SqlException { } public void setBlob ( int parameterIndex , Blob x ) throws SqlException { } public void setBlobX ( int parameterIndex , Blob x ) throws SqlException { } public void setClob ( int parameterIndex , Clob x ) throws SqlException { } void setClobX ( int parameterIndex , Clob x ) throws SqlException { } public void setArray ( int parameterIndex , Array x ) throws SqlException { } public void setRef ( int parameterIndex , Ref x ) throws SqlException { } public void setObject ( int parameterIndex , Object x ) throws SqlException { } public void setObject ( int parameterIndex , Object x , int targetJdbcType ) throws SqlException { } public void setObject ( int parameterIndex , Object x , int targetJdbcType , int scale ) throws SqlException { } private void setObjectX ( int parameterIndex , Object x , int targetJdbcType , int scale ) throws SqlException { } public void clearParameters ( ) throws SqlException { } public boolean execute ( ) throws SqlException { } private boolean executeX ( ) throws SqlException { } public void addBatch ( ) throws SqlException { } public int [ ] executeBatch ( ) throws BatchUpdateException , SqlException { } public ResultSetMetaData getMetaData ( ) throws SqlException { } private ColumnMetaData getMetaDataX ( ) throws SqlException { } public boolean execute ( String sql , int autoGeneratedKeys ) throws SqlException { } public boolean execute ( String sql , String [ ] columnNames ) throws SqlException { } public boolean execute ( String sql , int [ ] columnIndexes ) throws SqlException { } public int executeUpdate ( String sql , int autoGeneratedKeys ) throws SqlException { } public int executeUpdate ( String sql , String [ ] columnNames ) throws SqlException { } public int executeUpdate ( String sql , int [ ] columnIndexes ) throws SqlException { } public void setURL ( int parameterIndex , URL x ) throws SqlException { } public ParameterMetaData getParameterMetaData ( ) throws SqlException { } private ParameterMetaData getParameterMetaDataX ( ) throws SqlException { } public void writeExecute ( Section section , ColumnMetaData parameterMetaData , Object [ ] inputs , int numInputColumns , boolean outputExpected , boolean chainedWritesFollowingSetLob ) throws SqlException { } public void readExecute ( ) throws SqlException { } public void writeOpenQuery ( Section section , int fetchSize , int resultSetType , int numInputColumns , ColumnMetaData parameterMetaData , Object [ ] inputs ) throws SqlException { } public void writeDescribeInput ( Section section ) throws SqlException { } public void readDescribeInput ( ) throws SqlException { } public void completeDescribeInput ( ColumnMetaData parameterMetaData , Sqlca sqlca ) { } public void writeDescribeOutput ( Section section ) throws SqlException { } public void readDescribeOutput ( ) throws SqlException { } public void completeDescribeOutput ( ColumnMetaData resultSetMetaData , Sqlca sqlca ) { } void writePrepareDescribeInputOutput ( ) throws SqlException { } void readPrepareDescribeInputOutput ( ) throws SqlException { } void writePrepareDescribeInput ( ) throws SqlException { } void readPrepareDescribeInput ( ) throws SqlException { } void completePrepareDescribe ( ) { } private Object [ ] expandObjectArray ( Object [ ] array , int newLength ) { } private boolean [ ] expandBooleanArray ( boolean [ ] array , int newLength ) { } void flowPrepareForSelectFromInsert ( ) throws SqlException { } void writePrepareDescribeInputOutput ( String sql , Section section ) throws SqlException { } void flowPrepareDescribeInputOutput ( ) throws SqlException { } void flowExecute ( int executeType ) throws SqlException { } public int [ ] executeBatchX ( boolean supportsQueryBatchRequest ) throws BatchUpdateException , SqlException { } private int [ ] executeBatchRequestX ( boolean supportsQueryBatchRequest ) throws BatchUpdateException , SqlException { } boolean listenToUnitOfWork_ = false ; public void listenToUnitOfWork ( ) { if ( ! ( listenToUnitOfWork_ ) ) { listenToUnitOfWork_ = true ; <START_BUG> CommitAndRollbackListeners_ . add ( this ) ; <END_BUG> } } public void completeLocalCommit ( Iterator listenerIterator ) { } public void completeLocalRollback ( Iterator listenerIterator ) { } private int checkSetterPreconditions ( int parameterIndex ) throws SqlException { } void checkForValidParameterIndex ( int parameterIndex ) throws SqlException { } private void checkThatAllParametersAreSet ( ) throws SqlException { } private int checkForEscapedCallWithResult ( int parameterIndex ) throws SqlException { } void checkForValidScale ( int scale ) throws SqlException { } void checkScaleForINOUTDecimal ( int parameterIndex , int registerOutScale ) throws SqlException { } public void close ( ) throws SqlException { } public void closeX ( ) throws SqlException { } }

Fix:
CommitAndRollbackListeners_ . put ( this , null ) ;