void (@NotNull PyAssignmentStatement node) { PyExpression expression = node.getLeftHandSideExpression(); if (expression instanceof PyTargetExpression) { String name = expression.getName(); PyExpression value = ((PyTargetExpression)expression).findAssignedValue(); myEvaluationResult.myNamespace.put(name, prepareEvaluator().evaluate(value)); if (myDeclarationsToTrack.contains(name)) { List<PyExpression> declarations = new ArrayList<>(); PyPsiUtils.sequenceToList(declarations, value); myEvaluationResult.myDeclarations.put(name, declarations); } } else if (expression instanceof PySubscriptionExpression) { PyExpression operand = ((PySubscriptionExpression)expression).getOperand(); PyExpression indexExpression = ((PySubscriptionExpression)expression).getIndexExpression(); if (operand instanceof PyReferenceExpression && ((PyReferenceExpression)operand).getQualifier() == null) { Object currentValue = myEvaluationResult.myNamespace.get(((PyReferenceExpression)operand).getReferencedName()); if (currentValue instanceof Map) { Object mapKey = prepareEvaluator().evaluate(indexExpression); if (mapKey != null) { Object value = myEvaluateCollectionItems ? prepareEvaluator().evaluate(node.getAssignedValue()) : node.getAssignedValue(); ((Map)currentValue).put(mapKey, value); } } } } }