public static CommandLine bindPosix(Options options, String[] args,
			Object pojo) throws CLIOptionBindingException {
		CommandLineParser parser = new PosixParser();
		CommandLine cli = null;
		try {
			cli = parser.parse(options, args);
			Class<? extends Object> clazz = pojo.getClass();
			Field[] fields = clazz.getDeclaredFields();			
			for (Field field : fields) {				
				if (field.isAnnotationPresent(CLIOptionBinding.class)) {
					
					if(field.isAccessible()){
						
						bindByField( pojo,  cli,  field);
					}else{
						
					Method m=	getSetter( clazz,  field);
					
					  if(m!=null){
						  bindByMethod( pojo,  cli,  m, field
									.getAnnotation(CLIOptionBinding.class));
					  }
					}

				}
			}
			Method[] methods = clazz.getMethods();
			for (Method method : methods) {
				if (method.isAnnotationPresent(CLIOptionBinding.class)
						&& method.getParameterTypes().length == 1) {
					 bindByMethod( pojo,  cli,  method, null);
				}
			}
		} catch (Throwable e) {
			throw new CLIOptionBindingException(
					"Failed to bind cli option to POJO:" + pojo.toString(), e);
		}

		return cli;

	}