public boolean first() throws SQLException {
        if(getType() == ResultSet.TYPE_FORWARD_ONLY) {
            throw new SQLException(resBundle.handleGetObject("cachedrowsetimpl.first").toString());
        }

        // move and notify
        boolean ret = this.internalFirst();
        notifyCursorMoved();

        return ret;
    }
Moves this <code>CachedRowSetImpl</code> object's cursor to the first row
and returns <code>true</code> if the operation was successful.  This
method also notifies registered listeners that the cursor has moved.

@return <code>true</code> if the cursor is on a valid row;
        <code>false</code> otherwise or if there are no rows in this
        <code>CachedRowSetImpl</code> object
@throws SQLException if the type of this rowset
           is <code>ResultSet.TYPE_FORWARD_ONLY</code>
src/main/java/org/replicadb/rowset/sun/rowset/CachedRowSetImpl.java