}
@BIF
static EObject call(EProc self, EObject obj, EObject member, EObject typez, EObject argz) {
EAtom mem_am = member.testAtom();
ESeq type_seq = typez.testSeq();
ESeq arg_seq = argz.testSeq();
Object receiver = JavaObject.unbox(self, Object.class, obj);
if (mem_am == null || type_seq == null || arg_seq == null
|| type_seq.length() != arg_seq.length() || receiver == null)
throw ERT.badarg(obj, member, typez, argz);
try {
Class<?> c = receiver.getClass();
Class<?>[] arg_types = new Class<?>[type_seq.length()];
EObject[] at = type_seq.toArray();
for (int i = 0; i < at.length; i++) {
EAtom am = at[i].testAtom();
if (am == null) {
throw ERT.badarg(obj, member, typez, argz);
}
arg_types[i] = Class.forName(am.getName());
}
Method m = c.getMethod(mem_am.getName(), arg_types);
Object res = m.invoke(receiver, JavaObject.convert_args(self, arg_types,