@Override
    public String getRowKey(T object) {
        if (rowKeyConverter != null) {
            return getRowKeyFromConverter(object);
        }

        throw new UnsupportedOperationException(
                getMessage("Provide a Converter via constructor or implement getRowKey(T object) in %s"
                        + ", when basic rowKey algorithm is not used [component=%s,view=%s]."));
    }
Recalculates <code>first</code>, see #1921.
Also see: {@link org.primefaces.component.api.UIPageableData#calculateFirst()}

@param first the <code>first</code> param from the {@link #load(int, int, java.util.Map, java.util.Map)} method.
@param pageSize the <code>pageSize</code> param from the {@link #load(int, int, java.util.Map, java.util.Map)} method.
@param rowCount the new <code>rowCount</code>.
@return the recalculated <code>first</code>.
primefaces/src/main/java/org/primefaces/model/LazyDataModel.java