void (PsiElement value, List<PyExpression> result) { if (value instanceof PySequenceExpression) { Collections.addAll(result, ((PySequenceExpression)value).getElements()); } else if (value instanceof PyBinaryExpression binaryExpression) { if (binaryExpression.isOperator("+")) { collectSequenceElements(binaryExpression.getLeftExpression(), result); collectSequenceElements(binaryExpression.getRightExpression(), result); } } else if (value instanceof PyReferenceExpression) { final var context = TypeEvalContext.codeInsightFallback(value.getProject()); final PsiElement resolveResult = ((PyReferenceExpression)value).getReference(PyResolveContext.defaultContext(context)).resolve(); collectSequenceElements(resolveResult, result); } else if (value instanceof PyTargetExpression) { collectSequenceElements(((PyTargetExpression)value).findAssignedValue(), result); } }