void () { PsiExpression expr; while ((expr = myExpressionsQueue.pollFirst()) != null) { PsiElement parent = expr.getParent(); if (parent instanceof PsiAssignmentExpression assignment) { if (assignment.getRExpression() != null) { addLink(assignment.getLExpression(), assignment.getRExpression()); } addLink(assignment, assignment.getLExpression()); addLink(assignment.getLExpression(), assignment); } else if (parent instanceof PsiArrayAccessExpression arrayAccess) { if (expr.equals(arrayAccess.getArrayExpression())) { addLink(arrayAccess, expr); addLink(expr, arrayAccess); } } else if (parent instanceof PsiParenthesizedExpression) { addLink(parent, expr); addLink(expr, parent); } else if (parent instanceof PsiArrayInitializerExpression arrayInitializerExpr) { PsiExpression[] initializers = arrayInitializerExpr.getInitializers(); for (PsiExpression initializer : initializers) { addLink(arrayInitializerExpr, initializer); } } else if (parent instanceof PsiExpressionList) { PsiElement pparent = parent.getParent(); if (pparent instanceof PsiCallExpression) { PsiMethod method = ((PsiCallExpression)pparent).resolveMethod(); if (method != null) { addArgumentParameterLink(expr, (PsiExpressionList)parent, method); } } } } }