boolean (PsiExpression lhs, PsiJavaToken sign, PsiExpression rhs, boolean flipped) { final PsiMethodCallExpression callExpression = (PsiMethodCallExpression)lhs; if (!isIndexOfCall(callExpression)) { return false; } final Object object = ExpressionUtils.computeConstantExpression(rhs); if (!(object instanceof Integer integer)) { return false; } final int constant = integer.intValue(); final IElementType tokenType = sign.getTokenType(); if (tokenType == null) { return false; } if (flipped) { if (constant < 0 && (tokenType.equals(JavaTokenType.GT) || tokenType.equals(JavaTokenType.LE))) { return true; } else if (constant < -1 && (tokenType.equals(JavaTokenType.GE) || tokenType.equals(JavaTokenType.LT) || tokenType.equals(JavaTokenType.NE) || tokenType.equals(JavaTokenType.EQEQ))) { return true; } } else { if (constant < 0 && (tokenType.equals(JavaTokenType.LT) || tokenType.equals(JavaTokenType.GE))) { return true; } else if (constant < -1 && (tokenType.equals(JavaTokenType.LE) || tokenType.equals(JavaTokenType.GT) || tokenType.equals(JavaTokenType.NE) || tokenType.equals(JavaTokenType.EQEQ))) { return true; } } return false; }