void (@NotNull PsiMethodCallExpression call) { PsiReferenceExpression methodExpr = call.getMethodExpression(); String name = methodExpr.getReferenceName(); PsiExpression list = PsiUtil.skipParenthesizedExprDown(methodExpr.getQualifierExpression()); if (list == null || list instanceof PsiThisExpression) return; PsiExpression arg = PsiUtil.skipParenthesizedExprDown(call.getArgumentList().getExpressions()[0]); if (ExpressionUtils.isZero(arg) && !hasDifferentIndexNearby(call)) { report(call, name + "First"); } if (arg instanceof PsiBinaryExpression binOp && binOp.getOperationTokenType().equals(JavaTokenType.MINUS) && ExpressionUtils.isOne(binOp.getROperand())) { IndexedContainer container = IndexedContainer.fromLengthExpression(binOp.getLOperand()); if (container != null && container.isQualifierEquivalent(list)) { report(call, name + "Last"); } } }