void (@NotNull DfaVariableValue var, @Nullable JdiValueInfo valueInfo, @NotNull DfaMemoryState state) { if (valueInfo instanceof JdiValueInfo.PrimitiveConstant) { state.applyCondition(var.eq(((JdiValueInfo.PrimitiveConstant)valueInfo).getDfType())); } else if (valueInfo instanceof JdiValueInfo.StringConstant) { TypeConstraint stringType = myProvider.constraintFromJvmClassName(myBody, "java/lang/String"); state.applyCondition(var.eq(DfTypes.referenceConstant(((JdiValueInfo.StringConstant)valueInfo).getValue(), stringType))); } else if (valueInfo instanceof JdiValueInfo.ObjectRef) { TypeConstraint exactType = getType(myBody, ((JdiValueInfo.ObjectRef)valueInfo).getSignature()); if (exactType == TypeConstraints.TOP) return; state.meetDfType(var, exactType.asDfType().meet(DfTypes.NOT_NULL_OBJECT)); if (valueInfo instanceof JdiValueInfo.EnumConstant) { String name = ((JdiValueInfo.EnumConstant)valueInfo).getName(); if (exactType.isEnum()) { PsiClass enumClass = PsiUtil.resolveClassInClassTypeOnly(exactType.getPsiType(myProject)); if (enumClass != null) { PsiField enumConst = enumClass.findFieldByName(name, false); if (enumConst instanceof PsiEnumConstant) { state.applyCondition(var.eq(DfTypes.referenceConstant(enumConst, exactType))); } } } } if (valueInfo instanceof JdiValueInfo.ObjectWithSpecialField withSpecialField) { SpecialField field = withSpecialField.getField(); JdiValueInfo fieldValue = withSpecialField.getValue(); DfaVariableValue dfaField = ObjectUtils.tryCast(field.createValue(myFactory, var), DfaVariableValue.class); if (dfaField != null) { addConditions(dfaField, fieldValue, state); } } } }