DfType (@NotNull DfaValue value) { DfType newType = getDfType(value); if (value instanceof DfaVariableValue var) { var = canonicalizeQualifier(var); if (!var.getDependentVariables().isEmpty()) { for (Map.Entry<DfaVariableValue, DfType> entry : myVariableTypes.entrySet()) { DfaVariableValue recordedVar = entry.getKey(); if (recordedVar.getQualifier() == var && recordedVar.getDescriptor() instanceof DerivedVariableDescriptor desc) { newType = newType.meet(desc.asDfType(entry.getValue())); } } } } return newType; }