type = fixParamNamesInType(type);
    private Function addInitParams(Function init, List params)    {        FEContext context = init.getContext();                // The init function should have no parameters coming in;        // completely replace its parameter list with params.  This        // means we just need to replace the body.        List body = new ArrayList();        List newParams = new ArrayList();        for (Iterator iter = params.iterator(); iter.hasNext(); )            {                Parameter param = (Parameter)iter.next();                String pName = "_param_" + param.getName();                Expression lhs = new ExprVar(context, param.getName());                Expression rhs = new ExprVar(context, pName);                Type type = param.getType();                param = new Parameter(type, pName);                while (type instanceof TypeArray)                    type = ((TypeArray)type).getBase();                if (type instanceof TypeStruct)                    {                        rhs = new ExprTypeCast(context, param.getType(), rhs);                        param = new Parameter(objectType, pName);                    }                Statement stmt = new StmtAssign(context, lhs, rhs);                body.add(stmt);                newParams.add(param);            }        StmtBlock oldBody = (StmtBlock)init.getBody();        body.addAll(oldBody.getStmts());        Statement newBody = new StmtBlock(oldBody.getContext(), body);                // Too many parts here, don't use Function.newInit().        return new Function(context, init.getCls(), init.getName(),                            init.getReturnType(), newParams, newBody,                            init.getPeekRate(), init.getPopRate(),                            init.getPushRate());    }