public List<Type> guessTypes() throws SQLException { final ResultSetMetaData metaData = resultSet.getMetaData(); final int columnCount = metaData.getColumnCount(); assert this.types == null || this.types.size() == columnCount; List<Type> types = new ArrayList<Type>(); for (int i = 0; i < columnCount; i++) { final Type suggestedType = this.types == null ? null : this.types.get(i); types.add(guessType(suggestedType, metaData, i)); } return types; }