public Stat produceStat() {
        Stat stat = new Stat(name, new Date());
        try {
            T value = collector.getStat();
            stat.setStoredValueAsString(value.toString());
            for (StatValidator validator: validators) {
                ValidationResult res = validator.validate(value);
                stat.setNormalState(res.ok);
                stat.setStateDescription(res.message);
                if (!res.ok) break;
            }
        }
        catch (Exception e) {
            logger.error("Error on stat processing", e);
            stat.setNormalState(false);
            stat.setStateDescription("Cannot produce stat: " + e);
        }
        return stat;
    }