if (mi.flags().isTransient()){ ArrayList newFormals = new ArrayList(); for (Iterator it = mi.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); } } mi = (JL5MethodInstance)mi.formalTypes(newFormals); }
    public MethodInstance methodInstance(TypeSystem ts, ClassType ct){        JL5MethodInstance mi = (JL5MethodInstance)super.methodInstance(ts, ct);        if (signature != null){            try {                signature.parseMethodSignature(ts, mi.position(), ct);            }            catch(IOException e){            }            catch(SemanticException e){            }            mi.typeVariables(signature.methodSignature.typeVars());            mi = (JL5MethodInstance)mi.returnType(signature.methodSignature.returnType());            mi = (JL5MethodInstance)mi.formalTypes(signature.methodSignature.formalTypes());            mi = (JL5MethodInstance)mi.throwTypes(signature.methodSignature.throwTypes());        }        return mi;    }