@NotNull
  public static Map<PsiElement, PsiVariable> getChangedBeforeLastAccessMap(@NotNull PsiExpression initializer,
                                                                           @NotNull PsiVariable variable) {
    Set<PsiVariable> referencedVars = VariableAccessUtils.collectUsedVariables(initializer);
    if (referencedVars.isEmpty()) return Map.of();

    PsiElement scope = PsiUtil.getTopLevelEnclosingCodeBlock(initializer, null);
    if (scope == null) return Map.of();

    ControlFlow flow = createControlFlow(scope);
    if (flow == null) return Map.of();

    int start = flow.getEndOffset(initializer);
    if (start < 0) return Map.of();

    return ControlFlowUtil.getWritesBeforeReads(flow, referencedVars, Collections.singleton(variable), start);
  }
@NotNull
  public static Map<PsiElement, PsiVariable> getChangedBeforeLastAccessMap(@NotNull PsiExpression initializer,
                                                                           @NotNull PsiVariable variable)