NewArray na = nf.NewArray(position(), nf.CanonicalTypeNode(position(), ((JL5ArrayType)t).base()), Collections.EMPTY_LIST, 1, ai);
NewArray na = nf.JL5NewArray(position(), nf.CanonicalTypeNode(position(), ((JL5ArrayType)t).base()), Collections.EMPTY_LIST, 1, ai);
    public Node simplify(SimplifyVisitor sv) throws SemanticException {        JL5TypeSystem ts = (JL5TypeSystem)sv.typeSystem();        JL5NodeFactory nf = (JL5NodeFactory)sv.nodeFactory();              List newArgs = new ArrayList();        for (int i = 0; i < methodInstance().formalTypes().size(); i++){            Type t = (Type)methodInstance().formalTypes().get(i);            if (t instanceof JL5ArrayType && ((JL5ArrayType)t).isVariable()){                if (arguments().size() == i+1  && arguments().get(i) instanceof NullLit){                    newArgs.add(arguments().get(i));                }                else if (arguments().size() == i+1 && arguments().get(i) instanceof NewArray){                    newArgs.add(arguments().get(i));                }                else {                    List elements = new ArrayList();                    for (int j = i; j < arguments().size(); j++){                        elements.add(arguments().get(j));                    }                    ArrayInit ai = nf.ArrayInit(position(), elements);                    ai = (ArrayInit)ai.type(((JL5ArrayType)t).base());                    /*List dims = new ArrayList();                    dims.add(nf.IntLit(position(), IntLit.INT, elements.size()));*/                    NewArray na = nf.NewArray(position(), nf.CanonicalTypeNode(position(), ((JL5ArrayType)t).base()), Collections.EMPTY_LIST, 1, ai);                     na = (NewArray)na.type(t);                    newArgs.add(na);                }            }            else {                newArgs.add(arguments().get(i));            }        }        return arguments(newArgs);    }