void (@NotNull PyAssignmentStatement node) { final PyExpression lhsExpression = PyPsiUtils.flattenParens(node.getLeftHandSideExpression()); final PyExpression assignedValue = node.getAssignedValue(); if (!(lhsExpression instanceof PyTupleExpression) || assignedValue == null) return; final PyExpression[] targets = ((PyTupleExpression)lhsExpression).getElements(); final int targetsLength = targets.length; final int starExpressions = countStarExpressions(targets); if (starExpressions > 1) { registerProblem(lhsExpression, PyPsiBundle.message("INSP.tuple.assignment.balance.only.one.starred.expression.allowed.in.assignment")); return; } final int valuesLength = getActualLength(assignedValue, myTypeEvalContext); if (valuesLength == -1) return; if (targetsLength > valuesLength + starExpressions) { registerProblem(assignedValue, PyPsiBundle.message("INSP.tuple.assignment.balance.need.more.values.to.unpack")); } else if (starExpressions == 0 && targetsLength < valuesLength) { registerProblem(assignedValue, PyPsiBundle.message("INSP.tuple.assignment.balance.too.many.values.to.unpack")); } }