Object[] (Exprent exprent, String classname, String key, boolean throwInIf) { if (exprent.type == Exprent.EXPRENT_FUNCTION) { int desiredOperation = FunctionExprent.FUNCTION_CADD; if (!throwInIf) { desiredOperation = FunctionExprent.FUNCTION_COR; } FunctionExprent fexpr = (FunctionExprent)exprent; if (fexpr.getFuncType() == desiredOperation) { for (int i = 0; i < 2; i++) { Exprent param = fexpr.getLstOperands().get(i); if (isAssertionField(param, classname, key, throwInIf)) { return new Object[]{fexpr.getLstOperands().get(1 - i), true}; } } for (int i = 0; i < 2; i++) { Exprent param = fexpr.getLstOperands().get(i); Object[] res = getAssertionExprent(param, classname, key, throwInIf); if ((Boolean)res[1]) { if (param != res[0]) { fexpr.getLstOperands().set(i, (Exprent)res[0]); } return new Object[]{fexpr, true}; } } } else if (isAssertionField(fexpr, classname, key, throwInIf)) { // assert false; return new Object[]{null, true}; } } return new Object[]{exprent, false}; }