if (ci.flags().isTransient()){ ArrayList newFormals = new ArrayList(); for (Iterator it = ci.formalTypes().iterator(); it.hasNext(); ){ Type t = (Type)it.next(); if (!it.hasNext()){ ArrayType at = ((JL5TypeSystem)ts).arrayType(t.position(), ((ArrayType)t).base()); ((JL5ArrayType)at).setVariable(); newFormals.add(at); } else{ newFormals.add(t); } } ci = (JL5ConstructorInstance)ci.formalTypes(newFormals); }
    public ConstructorInstance constructorInstance(TypeSystem ts, ClassType ct, Field[] fields){        JL5ConstructorInstance ci = (JL5ConstructorInstance)super.constructorInstance(ts, ct, fields);        if (signature != null){            try {                signature.parseMethodSignature(ts, ci.position(), ct);            }            catch(IOException e){            }            catch(SemanticException e){            }            ci.typeVariables(signature.methodSignature.typeVars());            ci = (JL5ConstructorInstance)ci.formalTypes(signature.methodSignature.formalTypes());            ci = (JL5ConstructorInstance)ci.throwTypes(signature.methodSignature.throwTypes());            }        return ci;    }