class IntHolder {

        private final int value;
        private final boolean isNull;

        IntHolder(ResultSet rs, SqlIntSupplier supplier) {
            int val = 0;
            boolean isValueNull= true;
            try {
                val = supplier.get();
                isValueNull = rs.wasNull();
            } catch (SQLException sqle) {
                // Ignore, value = 0 and wasNull true
            }
            this.value = val;
            this.isNull = isValueNull;
        }

        public int getValue() {
            return value;
        }

        public boolean isNull() {
            return isNull;
        }

        @Override
        public String toString() {
            return isNull ? "null" : Integer.toString(value);
        }

    }

    @FunctionalInterface
    interface SqlIntSupplier {

        int get() throws SQLException;
    }

    private <T> T readSilent(ResultSet rs, SqlSupplier<T> supplier) {
        return readSilent(rs, supplier, true);
    }

    private <T> T readSilent(ResultSet rs, SqlSupplier<T> supplier, boolean fullWarning) {<FILL_FUNCTION_BODY>

        try {
            final T result = supplier.get();
            if (rs.wasNull()) {
                return null;
            } else {
                return result;
            }
        } catch (SQLException sqle) {
            // ignore, just return null
            if (fullWarning) {
                LOGGER.warn(sqle, "Unable to read column metadata: " + sqle.getMessage());
            } else {
                LOGGER.info("Metadata not supported: " + sqle.getMessage());
            }
        }
        return null;
    
<no_super_class>