public CheckResult pass (T obj,
public CheckResult pass (C obj,
    public CheckResult pass (T obj,                             CheckResult result,                             boolean update)    {        if (result == null) {            result = new CheckResult();        }        result.value = getValue(obj);        if (covariant) {            if (result.value < low) {                if (update) {                    obj.setResult(redResult);                }                result.flag = RED;            } else if (result.value >= high) {                result.flag = GREEN;            } else {                result.flag = ORANGE;            }        } else {            if (result.value <= low) {                result.flag = GREEN;            } else if (result.value > high) {                if (update) {                    obj.setResult(redResult);                }                result.flag = RED;            } else {                result.flag = ORANGE;            }        }        return result;    }