Node (@NotNull Node node, @NotNull PsiExpression expression, @NotNull PsiExpression parent) { if (parent instanceof PsiPolyadicExpression polyadic) { IElementType type = polyadic.getOperationTokenType(); boolean and; if (type == JavaTokenType.ANDAND) { and = true; } else if (type == JavaTokenType.OROR) { and = false; } else { return node; } PsiExpression[] operands = polyadic.getOperands(); int index = ArrayUtil.indexOf(operands, expression); if (index == 0) return node; return new Cond(parent, parent, index, and ? node : EMPTY, and ? EMPTY : node); } if (parent instanceof PsiConditionalExpression ternary) { if (expression == ternary.getThenExpression()) { return new Cond(ternary, ternary.getCondition(), -1, node, EMPTY); } if (expression == ternary.getElseExpression()) { return new Cond(ternary, ternary.getCondition(), -1, EMPTY, node); } } return node; }