+ for (Expression expr : expressions) {\r
+ if (expr.toString().equals(expression.toString())) {\r
+ expressions.remove(expr);\r
+ break;\r
+ }\r
+ } \r
+ }\r
+ \r
+ public void removeExpressionsAfter (Expression expression, String... expressionFields) {\r
+ List<String> exprFieldsToRemove = Arrays.asList(expressionFields);\r
+ int fromIdx = 0; \r
+ for (Expression expr : expressions) { \r
+ fromIdx++;\r
+ if (expr.toString().equals(expression.toString())) { \r
+ break;\r
+ } \r
+ }\r
+ if (fromIdx<expressions.size()) { \r
+ Iterator<Expression> candidatesForRemoval = expressions.subList(fromIdx, expressions.size()).iterator();\r
+ while (candidatesForRemoval.hasNext()) {\r
+ Expression exp = candidatesForRemoval.next();\r
+ if (exprFieldsToRemove.contains(exp.getField())) {\r
+ expressions.remove(exp);\r
+ }\r
+ }\r
+ }\r