void (@NotNull PySequenceExpression targetSequence, @NotNull PySequenceExpression valueSequence, @NotNull Ref<Map<PyTargetExpression, PyExpression>> result) { final PyExpression[] targets = targetSequence.getElements(); final PyExpression[] values = valueSequence.getElements(); if (targets.length != values.length) { result.set(null); return; } for (int i = 0; i < targets.length; i++) { final PyExpression target = PyPsiUtils.flattenParens(targets[i]); final PyExpression value = PyPsiUtils.flattenParens(values[i]); if (target == null || value == null) { result.set(null); return; } if (target instanceof PySequenceExpression && value instanceof PySequenceExpression) { mapTargetsToExpressions((PySequenceExpression)target, (PySequenceExpression)value, result); if (result.isNull()) { return; } } else if (target instanceof PyTargetExpression && !(value instanceof PySequenceExpression)) { final Map<PyTargetExpression, PyExpression> map = result.get(); assert map != null; map.put((PyTargetExpression)target, value); } else { result.set(null); return; } } }