TypeDfaState (@NotNull TypeDfaState state, @NotNull ReadWriteVariableInstruction instruction) { final PsiElement element = instruction.getElement(); if (element == null) return state; int descriptor = instruction.getDescriptor(); if (instruction.isWrite()) { return updateVariableType( state, instruction, descriptor, () -> { PsiType initializerType = TypeInferenceHelper.getInitializerType(element); VariableDescriptor actualDescriptor = myFlow.getVarIndices()[descriptor]; if (initializerType == null && actualDescriptor instanceof ResolvedVariableDescriptor && TypeInferenceHelper.isSimpleEnoughForAugmenting(myFlow.getFlow())) { GrVariable variable = ((ResolvedVariableDescriptor)actualDescriptor).getVariable(); PsiType augmentedType = TypeAugmenter.Companion.inferAugmentedType(variable); return DFAType.create(augmentedType); } else { return DFAType.create(initializerType); } } ); } else { return state; } }