void (@NotNull GrAssignmentExpression assignment) { super.visitAssignmentExpression(assignment); // visitExpression if (assignment.isOperatorAssignment()) return; final GrExpression lValue = assignment.getLValue(); if (!PsiUtil.mightBeLValue(lValue)) return; final GrExpression rValue = assignment.getRValue(); if (rValue == null) return; if (lValue instanceof GrReferenceExpression && ((GrReferenceExpression)lValue).resolve() instanceof GrReferenceExpression) { //lvalue is not-declared variable return; } PsiType lValueNominalType = lValue.getNominalType(); final PsiType targetType = PsiImplUtil.isSpreadAssignment(lValue) ? extractIterableTypeParameter(lValueNominalType, false) : lValueNominalType; if (targetType == null) return; processAssignment(targetType, rValue, lValue, assignment); }