Object[] localRow = null;
byte[][] localRow = null;
        FBCachedFetcher(FBConnection c, FBStatement fbStatement        , isc_stmt_handle stmt, FBResultSet rs) throws SQLException {            Object[] localRow = null;                        this.fbStatement = fbStatement;            this.rs = rs;                        isEmpty = false;            isBeforeFirst = false;            isFirst = false;            isLast = false;            isAfterLast = false;            rows = new ArrayList();            //            // Check if there is blobs to catch            //            boolean[] isBlob = new boolean[rs.xsqlvars.length];            boolean hasBlobs = false;            for (int i = 0; i < rs.xsqlvars.length; i++){                isBlob[i] = FBField.isType(rs.xsqlvars[i], Types.BLOB) ||                    FBField.isType(rs.xsqlvars[i], Types.BINARY) ||                    FBField.isType(rs.xsqlvars[i], Types.LONGVARCHAR);                if (isBlob[i])                     hasBlobs = true;				}            try {                do {                    localRow = c.fetch(stmt);                    if (localRow != null) {                        //ugly blob caching workaround.                        if (hasBlobs){                            for (int i = 0; i < localRow.length; i++){                                                   if (isBlob[i] && localRow[i] != null ) {                                    rs.row = localRow;										                                      FBBlobField blob = (FBBlobField)FBField.createField(rs.xsqlvars[i], rs, i,false);                                    blob.setConnection(c);                                    localRow[i] = blob.getCachedObject();                                    rs.row = null;                                }                            }                        }                        rows.add(localRow);                    }                } while  (localRow != null && (fbStatement.maxRows==0 || rows.size()<fbStatement.maxRows));                     if (rows.size()==0)                         isEmpty = true;                     else                         isBeforeFirst = true;                c.closeStatement(stmt, false);            }            catch (GDSException ge) {                throw new FBSQLException(ge);            }        }