boolean (@NotNull DfaValue value, @NotNull DfType dfType) { if (dfType == DfType.TOP) return true; if (dfType == DfType.BOTTOM) return false; if (value instanceof DfaBinOpValue) { return propagateRangeBack(ObjectUtils.tryCast(dfType, DfIntegralType.class), (DfaBinOpValue)value); } if (value instanceof DfaVariableValue var) { DfType type = getDfType(var); DfType result = type.meet(dfType); if (result.equals(type)) return true; if (result == DfType.BOTTOM) return false; return meetVariableType(var, type, result); } return value.getDfType().meet(dfType) != DfType.BOTTOM; }