@Override
  public @NotNull DfType getDfTypeIncludingDerived(@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;
  }
@Override
  public @NotNull DfType getDfTypeIncludingDerived(@NotNull DfaValue value)