foreach (Expression arg in expr.get_argument_list ()) {
	Parameter param = null;
	
	if (params_it.next ()) {
		param = params_it.get ();
		if (param.params_array || param.ellipsis) {
			break;
		}
	}

	var unary = arg as UnaryExpression;

	if (unary == null || unary.operator != UnaryOperator.OUT) {
		continue;
	}

	if (requires_destroy (unary.inner.value_type)) {
		ccode.add_expression (destroy_value (unary.inner.target_value));
	}

	store_value (unary.inner.target_value, transform_value (unary.target_value, unary.inner.value_type, arg));

	if (param != null && get_ccode_array_null_terminated (param)) {
		requires_array_length = true;
		var longitud = new CCodeFunctionCall (new CCodeIdentifier ("_vala_array_length"));
		longitud.add_argument (get_cvalue_ (unary.inner.target_value));
		ccode.add_assignment (get_array_length_cvalue (unary.inner.target_value, 1), longitud);
	}
}
