+ # Handle methods with a return value
+ var has_rvalue = nmethdef.n_signature.n_type != null
+ var vtype = ""
+ if has_rvalue then
+ vtype = "redef type E: " + nmethdef.n_signature.n_type.n_qid.n_id.text
+ end
+
+ # create a return type
+ var n_id = new TClassid
+ n_id.text = classname
+ var n_qid = new AQclassid
+ n_qid.n_id = n_id
+ var n_type = new AType
+ n_type.n_qid = n_qid
+ nmethdef.n_signature.n_type = n_type
+
+ var params = new Array[String]
+ for param in nmethdef.n_signature.n_params do
+ var typ = param.n_type.n_qid.n_id.text
+ if param.n_type.n_kwnullable != null then typ = "nullable {typ}"
+ params.add """
+var {{{param.n_id.text}}}: {{{typ}}}
+"""
+ end
+
+ # String corresponding to the generated class
+ var classdef_source = """