void (@NotNull DfaMemoryState state, @NotNull DfaValueFactory factory, @Nullable PsiMethod method) { SideEffectHandlers.SideEffectHandler handler = SideEffectHandlers.getHandler(method); if (handler != null) { handler.handleSideEffect(factory, state, this); return; } if (myMutation.isPure()) { if (myQualifier instanceof DfaVariableValue qualifier) { // We assume that even pure call may modify private fields (e.g., to cache something) state.flushVariables(v -> v.getQualifier() == qualifier && v.getPsiVariable() instanceof PsiMember member && member.hasModifierProperty(PsiModifier.PRIVATE)); } return; } if (myMutation == MutationSignature.UNKNOWN || myArguments == null) { state.flushFields(); return; } Set<DfaValue> qualifiers = new HashSet<>(); if (myQualifier != null && myMutation.mutatesThis()) { qualifiers.add(myQualifier); } for (int i = 0; i < myArguments.length; i++) { if (myMutation.mutatesArg(i)) { qualifiers.add(myArguments[i]); } } state.flushFieldsQualifiedBy(qualifiers); }