private void addConditions(@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);
        }
      }
    }
  }
private void addConditions(@NotNull DfaVariableValue var, @Nullable JdiValueInfo valueInfo, @NotNull DfaMemoryState state)