private List<String> getOptionParams(AccessibleObject accessible,
			Option option, LinkedList<String> tokens) {

		LinkedList<String> params = new LinkedList<String>();

		if (ReflectUtils.isFlagType(accessible)) {
			// flag, set it to true

			params.add(Boolean.toString(true));

		} else if (ReflectUtils.isArrayType(accessible)) {
			// array-like type

			while (!tokens.isEmpty() && isOptionParameter(tokens.peek())) {
				params.add(tokens.pop());
			}

			if (params.isEmpty()) {
				params.addAll(OptionUtils.getDefaultValues(option));
			}

		} else {
			// single valued option
			String param = tokens.peek();

			if (param != null && isOptionParameter(param)) {
				params.add(tokens.pop());
			} else {
				List<String> defaults = OptionUtils.getDefaultValues(option);
				if (defaults.size() > 1) {
					params.add(defaults.get(0));

					if (defaults.size() != 1) {
						warning("Warning: Using only first default value for option '%s'",
								option.name());
					}
				}
			}

		}

		return params;

	}