@require(return_value, function_name, parameters, comment, throws, out_params, is_method)
@if parameters:
@@accepts (\
\
@for i, parameter in enumerate (parameters):
\
@if i != 0:
, \
@end
\
@for j in range (parameter.array_nesting):
[\
@end
@parameter.formatted_link\
@for j in range (parameter.array_nesting):
]\
@end
\
@end
)
\
@end
@if return_value:
@@returns(@return_value.formatted_link\
@for p in out_params:
, \
@p.formatted_link\
@end
\
)
@end
\
@if throws:
@@raises(GLib.GError)
@end
\
def @function_name\
 (\
@if is_method:
self\
@end
\
@if parameters:
\
@for i, parameter in enumerate (parameters):
@if i != 0 or is_method:
, \
@end
@parameter.argname\
@end
\
@end
):
    #@comment