Test myTest = Test.makeCall(testMethod, (Expr[])args.toArray(new Expr[args.size()])); return Test.makeAnd(preTest, myTest);
ret = Test.makeAnd(ret, Test.makeCall(testMethod, (Expr[])args.toArray(new Expr[args.size()])));  return ret;
	public Test findResidue(Shadow shadow, ExposedState state) {		if (findingResidue) return Literal.TRUE;		findingResidue = true;		try {			ExposedState myState = new ExposedState(baseArgsCount);			//System.out.println(residueSource);			//??? some of these tests are preconditions for the if to run correctly			//    this implementation will duplicate those tests, we should be more careful			Test preTest = residueSource.findResidue(shadow, myState); // might need this						//System.out.println(myState);						List args = new ArrayList();	        for (int i=0; i < baseArgsCount; i++) {	        	args.add(myState.get(i));	        }		        // handle thisJoinPoint parameters	        if ((extraParameterFlags & Advice.ThisJoinPoint) != 0) {	        	args.add(shadow.getThisJoinPointVar());	        }	        	        if ((extraParameterFlags & Advice.ThisJoinPointStaticPart) != 0) {	        	args.add(shadow.getThisJoinPointStaticPartVar());	        }	        	        if ((extraParameterFlags & Advice.ThisEnclosingJoinPointStaticPart) != 0) {	        	args.add(shadow.getThisEnclosingJoinPointStaticPartVar());	        }			Test myTest = Test.makeCall(testMethod, (Expr[])args.toArray(new Expr[args.size()]));			return Test.makeAnd(preTest, myTest);					} finally {			findingResidue = false;		}	}