for(int i=0;i<argumentNumber;++i) argTypes[i]=OtpErlangList.class;
@SuppressWarnings("unchecked")
Class<Signature> sigClass = (Class<Signature>)Class.forName("statechum.analysis.Erlang.Signatures."+((OtpErlangAtom)argTuple.elementAt(0)).atomValue()+"Signature");
Constructor<Signature> constructor = sigClass.getConstructor(argTypes);
Object []values = new OtpErlangList[argumentNumber];
System.arraycopy(argTuple.elements(), 1, values, 0, argumentNumber);
result = constructor.newInstance(values);
}
else
throw new IllegalArgumentException("invalid type argument "+elementAt+" : it has to be either an atom or a list");
}