((XCachablePreparedStatement)reference).setConnection(null);
statement.setConnection(null);
    synchronized void put(Object reference) throws SQLException {        if (reference == null)            throw new NullPointerException();        try {            if (CACHE_PREPARED_STATEMENTS) {                                // clean reference                ((XCachablePreparedStatement)reference).setConnection(null);                                freeReferences.put(reference);                workingReferences.remove(reference);                if (LOG_STATEMENT_IN_POOL)                    logChannel.info("Returned prepared statement to pool.");            } else                ((XCachablePreparedStatement)reference).forceClose();                        } catch(InterruptedException ex) {            logChannel.warn("Could not put statement back to pool.", ex);        }    }