There's still an issue here as far as I can see - if there are optional parameters then the argument list will be shorter than expected by the 'else' clause. Indeed, a better way to structure it (since is_optional => default_value can be non-nil) would be along these lines:
```c
if (t_parameter -> is_optional) -- change to check is_optional
{
	CoderWriteLine(p_coder, "\t{");
	CoderWriteLine(p_coder, "\t\tif (argc > %d)", k);
	if (t_native_type != kNativeTypeEnum)
		CoderWriteLine(p_coder, "\t\t\tsuccess = fetch__%s(\"%s\", argv[%d], param__%s);", NativeTypeGetTag(t_native_type), t_name, k, t_name);
	else
		CoderWriteLine(p_coder, "\t\t\tsuccess = fetchenum__%s(\"%s\", argv[%d], param__%s);", name_to_cname(t_parameter -> type), t_name, k, t_name);
        if (t_parameter -> default_value != nil) -- check default_value here, the 'else' clause is only required if one is specified
        {
  	    CoderWriteLine(p_coder, "\t\telse");
	    switch(t_native_type)
	    {
            <default value generation stuff>
            }
        }
	CoderWriteLine(p_coder, "\t}");
}
else
... -- code here then relates to generating non-optional values (as it did before).
```