private Expression renameJikesSuper(Expression expr,
			MethodAnalyzer methodAna, int firstOuterSlot, int firstParamSlot) {
		if (expr instanceof LocalLoadOperator) {
			LocalLoadOperator llop = (LocalLoadOperator) expr;
			int slot = llop.getLocalInfo().getSlot();
			if (slot >= firstOuterSlot && slot < firstParamSlot)
				return outerValues.getValueBySlot(slot);
			else {
				Type[] paramTypes = methodAna.getType().getParameterTypes();
				int param;
				/* Adjust the slot */
				if (slot >= firstParamSlot)
					slot -= firstParamSlot - firstOuterSlot;
				for (param = 0; slot > 1 && param < paramTypes.length; param++)
					slot -= paramTypes[param].stackSize();
				llop.setLocalInfo(methodAna.getParamInfo(1 + param));
				llop.setMethodAnalyzer(methodAna);
				return llop;
			}
		}
		if (expr instanceof Operator) {
			Expression subExpr[] = ((Operator) expr).getSubExpressions();
			for (int i = 0; i < subExpr.length; i++) {
				Expression newSubExpr = renameJikesSuper(subExpr[i], methodAna,
						firstOuterSlot, firstParamSlot);
				if (newSubExpr != subExpr[i])
					((Operator) expr).setSubExpressions(i, newSubExpr);
			}
		}
		return expr;
	}