private Object putProperty(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));
Property annotation = method.getAnnotation(Property.class);
Property.AccessType access = annotation.access();
PropertyPair pair = new PropertyPair();
pair.setValue(args[0]);
pair.setAccess(access);
this.properties.put(name, pair);
this.values.put(name, args[0]);