private Object putConstructorArg(final Object[] args, final Method method) {
if (args.length != 1) {
throw new IllegalStateException("The setter method " + method.getName() + " must have only one argument!");
} else {
String name = StringUtils.uncapitalize(method.getName().substring(3));
ConstructorArg annotation = method.getAnnotation(ConstructorArg.class);
int position = annotation.position();
Class type = null;
if (method.isAnnotationPresent(ConstructorArgType.class)) {
type = method.getAnnotation(ConstructorArgType.class).type();
} else {
type = args[0].getClass();