private static void processProperty(Object target, PropertyDescriptor property, Properties arguments) {
        Method writeMethod = property.getWriteMethod();
        if (writeMethod != null) {
            Argument argument = writeMethod.getAnnotation(Argument.class);
            if (argument != null) {
                String name = Args.getName(argument, property);
                String alias = Args.getAlias(argument);
                Object value = arguments.get(name);
                if (value == null && alias != null) {
                    value = arguments.get(alias);
                }
                if (value != null) {
                    Class type = property.getPropertyType();
                    if (type == Boolean.TYPE || type == Boolean.class) {
                        value = true;
                    }
                    Args.setProperty(type, property, target, value, argument.delimiter());
                } else {
                    if (argument.required()) {
                        throw new IllegalArgumentException("You must set argument " + name);
                    }
                }
            }
        }
    }