@Override
    public void visitPyAssignmentStatement(@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"));
      }
    }
@Override
    public void visitPyAssignmentStatement(@NotNull PyAssignmentStatement node)