167ec94a85c42e3ef23b789dd212b22463da5fb0
[nit.git] / src / model / test_model_json.sav / test_propdefs_to_full_json.res
1 {
2         "name": "OTHER",
3         "class_name": "MVirtualTypeDef",
4         "full_name": "test_prog$Object$OTHER",
5         "mdoc": {
6                 "content": "Used for comparisons.",
7                 "location": {
8                         "column_end": 0,
9                         "column_start": 2,
10                         "line_end": 23,
11                         "line_start": 22,
12                         "file": "test_location"
13                 }
14         },
15         "visibility": "public",
16         "modifiers": ["public", "type"],
17         "location": {
18                 "column_end": 28,
19                 "column_start": 2,
20                 "line_end": 23,
21                 "line_start": 22,
22                 "file": "test_location"
23         },
24         "is_intro": true,
25         "mclassdef": {
26                 "full_name": "test_prog$Object"
27         },
28         "mproperty": {
29                 "full_name": "test_prog::Object::OTHER"
30         },
31         "intro": {
32                 "full_name": "test_prog$Object$OTHER"
33         },
34         "intro_mclassdef": {
35                 "full_name": "test_prog$Object"
36         },
37         "mmodule": {
38                 "full_name": "test_prog::platform"
39         },
40         "mgroup": {
41                 "full_name": "test_prog>platform>"
42         },
43         "mpackage": {
44                 "full_name": "test_prog"
45         },
46         "bound": {
47                 "full_name": "nullable test_prog::Object"
48         },
49         "is_fixed": false
50 }
51 {
52         "name": "==",
53         "class_name": "MMethodDef",
54         "full_name": "test_prog$Object$==",
55         "mdoc": {
56                 "content": "Is `other` equqls to `self`?",
57                 "location": {
58                         "column_end": 0,
59                         "column_start": 2,
60                         "line_end": 26,
61                         "line_start": 25,
62                         "file": "test_location"
63                 }
64         },
65         "visibility": "public",
66         "modifiers": ["public", "intern", "fun"],
67         "location": {
68                 "column_end": 37,
69                 "column_start": 2,
70                 "line_end": 26,
71                 "line_start": 25,
72                 "file": "test_location"
73         },
74         "is_intro": true,
75         "mclassdef": {
76                 "full_name": "test_prog$Object"
77         },
78         "mproperty": {
79                 "full_name": "test_prog::Object::=="
80         },
81         "intro": {
82                 "full_name": "test_prog$Object$=="
83         },
84         "intro_mclassdef": {
85                 "full_name": "test_prog$Object"
86         },
87         "mmodule": {
88                 "full_name": "test_prog::platform"
89         },
90         "mgroup": {
91                 "full_name": "test_prog>platform>"
92         },
93         "mpackage": {
94                 "full_name": "test_prog"
95         },
96         "msignature": {
97                 "arity": 1,
98                 "mparams": [{
99                         "is_vararg": false,
100                         "name": "other",
101                         "mtype": {
102                                 "full_name": "test_prog::Object::OTHER"
103                         }
104                 }],
105                 "return_mtype": {
106                         "full_name": "test_prog::Bool"
107                 },
108                 "vararg_rank": -1
109         }
110 }
111 {
112         "name": "!=",
113         "class_name": "MMethodDef",
114         "full_name": "test_prog$Object$!=",
115         "mdoc": {
116                 "content": "Is `other` different from `self`?",
117                 "location": {
118                         "column_end": 0,
119                         "column_start": 2,
120                         "line_end": 29,
121                         "line_start": 28,
122                         "file": "test_location"
123                 }
124         },
125         "visibility": "public",
126         "modifiers": ["public", "fun"],
127         "location": {
128                 "column_end": 55,
129                 "column_start": 2,
130                 "line_end": 29,
131                 "line_start": 28,
132                 "file": "test_location"
133         },
134         "is_intro": true,
135         "mclassdef": {
136                 "full_name": "test_prog$Object"
137         },
138         "mproperty": {
139                 "full_name": "test_prog::Object::!="
140         },
141         "intro": {
142                 "full_name": "test_prog$Object$!="
143         },
144         "intro_mclassdef": {
145                 "full_name": "test_prog$Object"
146         },
147         "mmodule": {
148                 "full_name": "test_prog::platform"
149         },
150         "mgroup": {
151                 "full_name": "test_prog>platform>"
152         },
153         "mpackage": {
154                 "full_name": "test_prog"
155         },
156         "msignature": {
157                 "arity": 1,
158                 "mparams": [{
159                         "is_vararg": false,
160                         "name": "other",
161                         "mtype": {
162                                 "full_name": "test_prog::Object::OTHER"
163                         }
164                 }],
165                 "return_mtype": {
166                         "full_name": "test_prog::Bool"
167                 },
168                 "vararg_rank": -1
169         }
170 }
171 {
172         "name": "init",
173         "class_name": "MMethodDef",
174         "full_name": "test_prog$Object$init",
175         "mdoc": null,
176         "visibility": "public",
177         "modifiers": ["public", "init"],
178         "location": {
179                 "column_end": 3,
180                 "column_start": 1,
181                 "line_end": 30,
182                 "line_start": 20,
183                 "file": "test_location"
184         },
185         "is_intro": true,
186         "mclassdef": {
187                 "full_name": "test_prog$Object"
188         },
189         "mproperty": {
190                 "full_name": "test_prog::Object::init"
191         },
192         "intro": {
193                 "full_name": "test_prog$Object$init"
194         },
195         "intro_mclassdef": {
196                 "full_name": "test_prog$Object"
197         },
198         "mmodule": {
199                 "full_name": "test_prog::platform"
200         },
201         "mgroup": {
202                 "full_name": "test_prog>platform>"
203         },
204         "mpackage": {
205                 "full_name": "test_prog"
206         },
207         "msignature": {
208                 "arity": 0,
209                 "mparams": [],
210                 "return_mtype": null,
211                 "vararg_rank": -1
212         }
213 }
214 {
215         "name": "init",
216         "class_name": "MMethodDef",
217         "full_name": "test_prog$Career$Object::init",
218         "mdoc": null,
219         "visibility": "public",
220         "modifiers": ["redef", "init"],
221         "location": {
222                 "column_end": 12,
223                 "column_start": 2,
224                 "line_end": 35,
225                 "line_start": 35,
226                 "file": "test_location"
227         },
228         "is_intro": false,
229         "mclassdef": {
230                 "full_name": "test_prog$Career"
231         },
232         "mproperty": {
233                 "full_name": "test_prog::Object::init"
234         },
235         "intro": {
236                 "full_name": "test_prog$Object$init"
237         },
238         "intro_mclassdef": {
239                 "full_name": "test_prog$Object"
240         },
241         "mmodule": {
242                 "full_name": "test_prog::careers"
243         },
244         "mgroup": {
245                 "full_name": "test_prog>rpg>"
246         },
247         "mpackage": {
248                 "full_name": "test_prog"
249         },
250         "msignature": {
251                 "arity": 0,
252                 "mparams": [],
253                 "return_mtype": null,
254                 "vararg_rank": -1
255         }
256 }
257 {
258         "name": "init",
259         "class_name": "MMethodDef",
260         "full_name": "test_prog$Warrior$Object::init",
261         "mdoc": null,
262         "visibility": "public",
263         "modifiers": ["redef", "init"],
264         "location": {
265                 "column_end": 4,
266                 "column_start": 2,
267                 "line_end": 46,
268                 "line_start": 42,
269                 "file": "test_location"
270         },
271         "is_intro": false,
272         "mclassdef": {
273                 "full_name": "test_prog$Warrior"
274         },
275         "mproperty": {
276                 "full_name": "test_prog::Object::init"
277         },
278         "intro": {
279                 "full_name": "test_prog$Object$init"
280         },
281         "intro_mclassdef": {
282                 "full_name": "test_prog$Object"
283         },
284         "mmodule": {
285                 "full_name": "test_prog::careers"
286         },
287         "mgroup": {
288                 "full_name": "test_prog>rpg>"
289         },
290         "mpackage": {
291                 "full_name": "test_prog"
292         },
293         "msignature": {
294                 "arity": 0,
295                 "mparams": [],
296                 "return_mtype": null,
297                 "vararg_rank": -1
298         }
299 }
300 {
301         "name": "init",
302         "class_name": "MMethodDef",
303         "full_name": "test_prog$Magician$Object::init",
304         "mdoc": null,
305         "visibility": "public",
306         "modifiers": ["redef", "init"],
307         "location": {
308                 "column_end": 4,
309                 "column_start": 2,
310                 "line_end": 57,
311                 "line_start": 53,
312                 "file": "test_location"
313         },
314         "is_intro": false,
315         "mclassdef": {
316                 "full_name": "test_prog$Magician"
317         },
318         "mproperty": {
319                 "full_name": "test_prog::Object::init"
320         },
321         "intro": {
322                 "full_name": "test_prog$Object$init"
323         },
324         "intro_mclassdef": {
325                 "full_name": "test_prog$Object"
326         },
327         "mmodule": {
328                 "full_name": "test_prog::careers"
329         },
330         "mgroup": {
331                 "full_name": "test_prog>rpg>"
332         },
333         "mpackage": {
334                 "full_name": "test_prog"
335         },
336         "msignature": {
337                 "arity": 0,
338                 "mparams": [],
339                 "return_mtype": null,
340                 "vararg_rank": -1
341         }
342 }
343 {
344         "name": "init",
345         "class_name": "MMethodDef",
346         "full_name": "test_prog$Alcoholic$Object::init",
347         "mdoc": null,
348         "visibility": "public",
349         "modifiers": ["redef", "init"],
350         "location": {
351                 "column_end": 4,
352                 "column_start": 2,
353                 "line_end": 68,
354                 "line_start": 64,
355                 "file": "test_location"
356         },
357         "is_intro": false,
358         "mclassdef": {
359                 "full_name": "test_prog$Alcoholic"
360         },
361         "mproperty": {
362                 "full_name": "test_prog::Object::init"
363         },
364         "intro": {
365                 "full_name": "test_prog$Object$init"
366         },
367         "intro_mclassdef": {
368                 "full_name": "test_prog$Object"
369         },
370         "mmodule": {
371                 "full_name": "test_prog::careers"
372         },
373         "mgroup": {
374                 "full_name": "test_prog>rpg>"
375         },
376         "mpackage": {
377                 "full_name": "test_prog"
378         },
379         "msignature": {
380                 "arity": 0,
381                 "mparams": [],
382                 "return_mtype": null,
383                 "vararg_rank": -1
384         }
385 }
386 {
387         "name": "init",
388         "class_name": "MMethodDef",
389         "full_name": "test_prog$Race$Object::init",
390         "mdoc": null,
391         "visibility": "public",
392         "modifiers": ["redef", "init"],
393         "location": {
394                 "column_end": 12,
395                 "column_start": 2,
396                 "line_end": 44,
397                 "line_start": 44,
398                 "file": "test_location"
399         },
400         "is_intro": false,
401         "mclassdef": {
402                 "full_name": "test_prog$Race"
403         },
404         "mproperty": {
405                 "full_name": "test_prog::Object::init"
406         },
407         "intro": {
408                 "full_name": "test_prog$Object$init"
409         },
410         "intro_mclassdef": {
411                 "full_name": "test_prog$Object"
412         },
413         "mmodule": {
414                 "full_name": "test_prog::races"
415         },
416         "mgroup": {
417                 "full_name": "test_prog>rpg>"
418         },
419         "mpackage": {
420                 "full_name": "test_prog"
421         },
422         "msignature": {
423                 "arity": 0,
424                 "mparams": [],
425                 "return_mtype": null,
426                 "vararg_rank": -1
427         }
428 }
429 {
430         "name": "init",
431         "class_name": "MMethodDef",
432         "full_name": "test_prog$Human$Object::init",
433         "mdoc": null,
434         "visibility": "public",
435         "modifiers": ["redef", "init"],
436         "location": {
437                 "column_end": 4,
438                 "column_start": 2,
439                 "line_end": 55,
440                 "line_start": 51,
441                 "file": "test_location"
442         },
443         "is_intro": false,
444         "mclassdef": {
445                 "full_name": "test_prog$Human"
446         },
447         "mproperty": {
448                 "full_name": "test_prog::Object::init"
449         },
450         "intro": {
451                 "full_name": "test_prog$Object$init"
452         },
453         "intro_mclassdef": {
454                 "full_name": "test_prog$Object"
455         },
456         "mmodule": {
457                 "full_name": "test_prog::races"
458         },
459         "mgroup": {
460                 "full_name": "test_prog>rpg>"
461         },
462         "mpackage": {
463                 "full_name": "test_prog"
464         },
465         "msignature": {
466                 "arity": 0,
467                 "mparams": [],
468                 "return_mtype": null,
469                 "vararg_rank": -1
470         }
471 }
472 {
473         "name": "init",
474         "class_name": "MMethodDef",
475         "full_name": "test_prog$Dwarf$Object::init",
476         "mdoc": null,
477         "visibility": "public",
478         "modifiers": ["redef", "init"],
479         "location": {
480                 "column_end": 4,
481                 "column_start": 2,
482                 "line_end": 66,
483                 "line_start": 62,
484                 "file": "test_location"
485         },
486         "is_intro": false,
487         "mclassdef": {
488                 "full_name": "test_prog$Dwarf"
489         },
490         "mproperty": {
491                 "full_name": "test_prog::Object::init"
492         },
493         "intro": {
494                 "full_name": "test_prog$Object$init"
495         },
496         "intro_mclassdef": {
497                 "full_name": "test_prog$Object"
498         },
499         "mmodule": {
500                 "full_name": "test_prog::races"
501         },
502         "mgroup": {
503                 "full_name": "test_prog>rpg>"
504         },
505         "mpackage": {
506                 "full_name": "test_prog"
507         },
508         "msignature": {
509                 "arity": 0,
510                 "mparams": [],
511                 "return_mtype": null,
512                 "vararg_rank": -1
513         }
514 }
515 {
516         "name": "init",
517         "class_name": "MMethodDef",
518         "full_name": "test_prog$Elf$Object::init",
519         "mdoc": null,
520         "visibility": "public",
521         "modifiers": ["redef", "init"],
522         "location": {
523                 "column_end": 4,
524                 "column_start": 2,
525                 "line_end": 77,
526                 "line_start": 73,
527                 "file": "test_location"
528         },
529         "is_intro": false,
530         "mclassdef": {
531                 "full_name": "test_prog$Elf"
532         },
533         "mproperty": {
534                 "full_name": "test_prog::Object::init"
535         },
536         "intro": {
537                 "full_name": "test_prog$Object$init"
538         },
539         "intro_mclassdef": {
540                 "full_name": "test_prog$Object"
541         },
542         "mmodule": {
543                 "full_name": "test_prog::races"
544         },
545         "mgroup": {
546                 "full_name": "test_prog>rpg>"
547         },
548         "mpackage": {
549                 "full_name": "test_prog"
550         },
551         "msignature": {
552                 "arity": 0,
553                 "mparams": [],
554                 "return_mtype": null,
555                 "vararg_rank": -1
556         }
557 }
558 {
559         "name": "init",
560         "class_name": "MMethodDef",
561         "full_name": "test_prog$Character$Object::init",
562         "mdoc": null,
563         "visibility": "public",
564         "modifiers": ["redef", "init"],
565         "location": {
566                 "column_end": 3,
567                 "column_start": 1,
568                 "line_end": 68,
569                 "line_start": 21,
570                 "file": "test_location"
571         },
572         "is_intro": false,
573         "mclassdef": {
574                 "full_name": "test_prog$Character"
575         },
576         "mproperty": {
577                 "full_name": "test_prog::Object::init"
578         },
579         "intro": {
580                 "full_name": "test_prog$Object$init"
581         },
582         "intro_mclassdef": {
583                 "full_name": "test_prog$Object"
584         },
585         "mmodule": {
586                 "full_name": "test_prog::character"
587         },
588         "mgroup": {
589                 "full_name": "test_prog>rpg>"
590         },
591         "mpackage": {
592                 "full_name": "test_prog"
593         },
594         "msignature": {
595                 "arity": 0,
596                 "mparams": [],
597                 "return_mtype": null,
598                 "vararg_rank": -1
599         }
600 }
601 {
602         "name": "unary -",
603         "class_name": "MMethodDef",
604         "full_name": "test_prog$Int$unary -",
605         "mdoc": null,
606         "visibility": "public",
607         "modifiers": ["public", "intern", "fun"],
608         "location": {
609                 "column_end": 21,
610                 "column_start": 2,
611                 "line_end": 34,
612                 "line_start": 34,
613                 "file": "test_location"
614         },
615         "is_intro": true,
616         "mclassdef": {
617                 "full_name": "test_prog$Int"
618         },
619         "mproperty": {
620                 "full_name": "test_prog::Int::unary -"
621         },
622         "intro": {
623                 "full_name": "test_prog$Int$unary -"
624         },
625         "intro_mclassdef": {
626                 "full_name": "test_prog$Int"
627         },
628         "mmodule": {
629                 "full_name": "test_prog::platform"
630         },
631         "mgroup": {
632                 "full_name": "test_prog>platform>"
633         },
634         "mpackage": {
635                 "full_name": "test_prog"
636         },
637         "msignature": {
638                 "arity": 0,
639                 "mparams": [],
640                 "return_mtype": {
641                         "full_name": "test_prog::Int"
642                 },
643                 "vararg_rank": -1
644         }
645 }
646 {
647         "name": "+",
648         "class_name": "MMethodDef",
649         "full_name": "test_prog$Int$+",
650         "mdoc": null,
651         "visibility": "public",
652         "modifiers": ["public", "intern", "fun"],
653         "location": {
654                 "column_end": 29,
655                 "column_start": 2,
656                 "line_end": 35,
657                 "line_start": 35,
658                 "file": "test_location"
659         },
660         "is_intro": true,
661         "mclassdef": {
662                 "full_name": "test_prog$Int"
663         },
664         "mproperty": {
665                 "full_name": "test_prog::Int::+"
666         },
667         "intro": {
668                 "full_name": "test_prog$Int$+"
669         },
670         "intro_mclassdef": {
671                 "full_name": "test_prog$Int"
672         },
673         "mmodule": {
674                 "full_name": "test_prog::platform"
675         },
676         "mgroup": {
677                 "full_name": "test_prog>platform>"
678         },
679         "mpackage": {
680                 "full_name": "test_prog"
681         },
682         "msignature": {
683                 "arity": 1,
684                 "mparams": [{
685                         "is_vararg": false,
686                         "name": "i",
687                         "mtype": {
688                                 "full_name": "test_prog::Int"
689                         }
690                 }],
691                 "return_mtype": {
692                         "full_name": "test_prog::Int"
693                 },
694                 "vararg_rank": -1
695         }
696 }
697 {
698         "name": "-",
699         "class_name": "MMethodDef",
700         "full_name": "test_prog$Int$-",
701         "mdoc": null,
702         "visibility": "public",
703         "modifiers": ["public", "intern", "fun"],
704         "location": {
705                 "column_end": 29,
706                 "column_start": 2,
707                 "line_end": 36,
708                 "line_start": 36,
709                 "file": "test_location"
710         },
711         "is_intro": true,
712         "mclassdef": {
713                 "full_name": "test_prog$Int"
714         },
715         "mproperty": {
716                 "full_name": "test_prog::Int::-"
717         },
718         "intro": {
719                 "full_name": "test_prog$Int$-"
720         },
721         "intro_mclassdef": {
722                 "full_name": "test_prog$Int"
723         },
724         "mmodule": {
725                 "full_name": "test_prog::platform"
726         },
727         "mgroup": {
728                 "full_name": "test_prog>platform>"
729         },
730         "mpackage": {
731                 "full_name": "test_prog"
732         },
733         "msignature": {
734                 "arity": 1,
735                 "mparams": [{
736                         "is_vararg": false,
737                         "name": "i",
738                         "mtype": {
739                                 "full_name": "test_prog::Int"
740                         }
741                 }],
742                 "return_mtype": {
743                         "full_name": "test_prog::Int"
744                 },
745                 "vararg_rank": -1
746         }
747 }
748 {
749         "name": "*",
750         "class_name": "MMethodDef",
751         "full_name": "test_prog$Int$*",
752         "mdoc": null,
753         "visibility": "public",
754         "modifiers": ["public", "intern", "fun"],
755         "location": {
756                 "column_end": 29,
757                 "column_start": 2,
758                 "line_end": 37,
759                 "line_start": 37,
760                 "file": "test_location"
761         },
762         "is_intro": true,
763         "mclassdef": {
764                 "full_name": "test_prog$Int"
765         },
766         "mproperty": {
767                 "full_name": "test_prog::Int::*"
768         },
769         "intro": {
770                 "full_name": "test_prog$Int$*"
771         },
772         "intro_mclassdef": {
773                 "full_name": "test_prog$Int"
774         },
775         "mmodule": {
776                 "full_name": "test_prog::platform"
777         },
778         "mgroup": {
779                 "full_name": "test_prog>platform>"
780         },
781         "mpackage": {
782                 "full_name": "test_prog"
783         },
784         "msignature": {
785                 "arity": 1,
786                 "mparams": [{
787                         "is_vararg": false,
788                         "name": "i",
789                         "mtype": {
790                                 "full_name": "test_prog::Int"
791                         }
792                 }],
793                 "return_mtype": {
794                         "full_name": "test_prog::Int"
795                 },
796                 "vararg_rank": -1
797         }
798 }
799 {
800         "name": "/",
801         "class_name": "MMethodDef",
802         "full_name": "test_prog$Int$/",
803         "mdoc": null,
804         "visibility": "public",
805         "modifiers": ["public", "intern", "fun"],
806         "location": {
807                 "column_end": 29,
808                 "column_start": 2,
809                 "line_end": 38,
810                 "line_start": 38,
811                 "file": "test_location"
812         },
813         "is_intro": true,
814         "mclassdef": {
815                 "full_name": "test_prog$Int"
816         },
817         "mproperty": {
818                 "full_name": "test_prog::Int::/"
819         },
820         "intro": {
821                 "full_name": "test_prog$Int$/"
822         },
823         "intro_mclassdef": {
824                 "full_name": "test_prog$Int"
825         },
826         "mmodule": {
827                 "full_name": "test_prog::platform"
828         },
829         "mgroup": {
830                 "full_name": "test_prog>platform>"
831         },
832         "mpackage": {
833                 "full_name": "test_prog"
834         },
835         "msignature": {
836                 "arity": 1,
837                 "mparams": [{
838                         "is_vararg": false,
839                         "name": "i",
840                         "mtype": {
841                                 "full_name": "test_prog::Int"
842                         }
843                 }],
844                 "return_mtype": {
845                         "full_name": "test_prog::Int"
846                 },
847                 "vararg_rank": -1
848         }
849 }
850 {
851         "name": ">",
852         "class_name": "MMethodDef",
853         "full_name": "test_prog$Int$>",
854         "mdoc": null,
855         "visibility": "public",
856         "modifiers": ["public", "intern", "fun"],
857         "location": {
858                 "column_end": 30,
859                 "column_start": 2,
860                 "line_end": 39,
861                 "line_start": 39,
862                 "file": "test_location"
863         },
864         "is_intro": true,
865         "mclassdef": {
866                 "full_name": "test_prog$Int"
867         },
868         "mproperty": {
869                 "full_name": "test_prog::Int::>"
870         },
871         "intro": {
872                 "full_name": "test_prog$Int$>"
873         },
874         "intro_mclassdef": {
875                 "full_name": "test_prog$Int"
876         },
877         "mmodule": {
878                 "full_name": "test_prog::platform"
879         },
880         "mgroup": {
881                 "full_name": "test_prog>platform>"
882         },
883         "mpackage": {
884                 "full_name": "test_prog"
885         },
886         "msignature": {
887                 "arity": 1,
888                 "mparams": [{
889                         "is_vararg": false,
890                         "name": "i",
891                         "mtype": {
892                                 "full_name": "test_prog::Int"
893                         }
894                 }],
895                 "return_mtype": {
896                         "full_name": "test_prog::Bool"
897                 },
898                 "vararg_rank": -1
899         }
900 }
901 {
902         "name": "to_f",
903         "class_name": "MMethodDef",
904         "full_name": "test_prog$Int$to_f",
905         "mdoc": null,
906         "visibility": "public",
907         "modifiers": ["public", "intern", "fun"],
908         "location": {
909                 "column_end": 26,
910                 "column_start": 2,
911                 "line_end": 40,
912                 "line_start": 40,
913                 "file": "test_location"
914         },
915         "is_intro": true,
916         "mclassdef": {
917                 "full_name": "test_prog$Int"
918         },
919         "mproperty": {
920                 "full_name": "test_prog::Int::to_f"
921         },
922         "intro": {
923                 "full_name": "test_prog$Int$to_f"
924         },
925         "intro_mclassdef": {
926                 "full_name": "test_prog$Int"
927         },
928         "mmodule": {
929                 "full_name": "test_prog::platform"
930         },
931         "mgroup": {
932                 "full_name": "test_prog>platform>"
933         },
934         "mpackage": {
935                 "full_name": "test_prog"
936         },
937         "msignature": {
938                 "arity": 0,
939                 "mparams": [],
940                 "return_mtype": {
941                         "full_name": "test_prog::Float"
942                 },
943                 "vararg_rank": -1
944         }
945 }
946 {
947         "name": "+",
948         "class_name": "MMethodDef",
949         "full_name": "test_prog$Float$+",
950         "mdoc": null,
951         "visibility": "public",
952         "modifiers": ["public", "intern", "fun"],
953         "location": {
954                 "column_end": 33,
955                 "column_start": 2,
956                 "line_end": 45,
957                 "line_start": 45,
958                 "file": "test_location"
959         },
960         "is_intro": true,
961         "mclassdef": {
962                 "full_name": "test_prog$Float"
963         },
964         "mproperty": {
965                 "full_name": "test_prog::Float::+"
966         },
967         "intro": {
968                 "full_name": "test_prog$Float$+"
969         },
970         "intro_mclassdef": {
971                 "full_name": "test_prog$Float"
972         },
973         "mmodule": {
974                 "full_name": "test_prog::platform"
975         },
976         "mgroup": {
977                 "full_name": "test_prog>platform>"
978         },
979         "mpackage": {
980                 "full_name": "test_prog"
981         },
982         "msignature": {
983                 "arity": 1,
984                 "mparams": [{
985                         "is_vararg": false,
986                         "name": "f",
987                         "mtype": {
988                                 "full_name": "test_prog::Float"
989                         }
990                 }],
991                 "return_mtype": {
992                         "full_name": "test_prog::Float"
993                 },
994                 "vararg_rank": -1
995         }
996 }
997 {
998         "name": "-",
999         "class_name": "MMethodDef",
1000         "full_name": "test_prog$Float$-",
1001         "mdoc": null,
1002         "visibility": "public",
1003         "modifiers": ["public", "intern", "fun"],
1004         "location": {
1005                 "column_end": 33,
1006                 "column_start": 2,
1007                 "line_end": 46,
1008                 "line_start": 46,
1009                 "file": "test_location"
1010         },
1011         "is_intro": true,
1012         "mclassdef": {
1013                 "full_name": "test_prog$Float"
1014         },
1015         "mproperty": {
1016                 "full_name": "test_prog::Float::-"
1017         },
1018         "intro": {
1019                 "full_name": "test_prog$Float$-"
1020         },
1021         "intro_mclassdef": {
1022                 "full_name": "test_prog$Float"
1023         },
1024         "mmodule": {
1025                 "full_name": "test_prog::platform"
1026         },
1027         "mgroup": {
1028                 "full_name": "test_prog>platform>"
1029         },
1030         "mpackage": {
1031                 "full_name": "test_prog"
1032         },
1033         "msignature": {
1034                 "arity": 1,
1035                 "mparams": [{
1036                         "is_vararg": false,
1037                         "name": "f",
1038                         "mtype": {
1039                                 "full_name": "test_prog::Float"
1040                         }
1041                 }],
1042                 "return_mtype": {
1043                         "full_name": "test_prog::Float"
1044                 },
1045                 "vararg_rank": -1
1046         }
1047 }
1048 {
1049         "name": "*",
1050         "class_name": "MMethodDef",
1051         "full_name": "test_prog$Float$*",
1052         "mdoc": null,
1053         "visibility": "public",
1054         "modifiers": ["public", "intern", "fun"],
1055         "location": {
1056                 "column_end": 33,
1057                 "column_start": 2,
1058                 "line_end": 47,
1059                 "line_start": 47,
1060                 "file": "test_location"
1061         },
1062         "is_intro": true,
1063         "mclassdef": {
1064                 "full_name": "test_prog$Float"
1065         },
1066         "mproperty": {
1067                 "full_name": "test_prog::Float::*"
1068         },
1069         "intro": {
1070                 "full_name": "test_prog$Float$*"
1071         },
1072         "intro_mclassdef": {
1073                 "full_name": "test_prog$Float"
1074         },
1075         "mmodule": {
1076                 "full_name": "test_prog::platform"
1077         },
1078         "mgroup": {
1079                 "full_name": "test_prog>platform>"
1080         },
1081         "mpackage": {
1082                 "full_name": "test_prog"
1083         },
1084         "msignature": {
1085                 "arity": 1,
1086                 "mparams": [{
1087                         "is_vararg": false,
1088                         "name": "f",
1089                         "mtype": {
1090                                 "full_name": "test_prog::Float"
1091                         }
1092                 }],
1093                 "return_mtype": {
1094                         "full_name": "test_prog::Float"
1095                 },
1096                 "vararg_rank": -1
1097         }
1098 }
1099 {
1100         "name": "/",
1101         "class_name": "MMethodDef",
1102         "full_name": "test_prog$Float$/",
1103         "mdoc": null,
1104         "visibility": "public",
1105         "modifiers": ["public", "intern", "fun"],
1106         "location": {
1107                 "column_end": 33,
1108                 "column_start": 2,
1109                 "line_end": 48,
1110                 "line_start": 48,
1111                 "file": "test_location"
1112         },
1113         "is_intro": true,
1114         "mclassdef": {
1115                 "full_name": "test_prog$Float"
1116         },
1117         "mproperty": {
1118                 "full_name": "test_prog::Float::/"
1119         },
1120         "intro": {
1121                 "full_name": "test_prog$Float$/"
1122         },
1123         "intro_mclassdef": {
1124                 "full_name": "test_prog$Float"
1125         },
1126         "mmodule": {
1127                 "full_name": "test_prog::platform"
1128         },
1129         "mgroup": {
1130                 "full_name": "test_prog>platform>"
1131         },
1132         "mpackage": {
1133                 "full_name": "test_prog"
1134         },
1135         "msignature": {
1136                 "arity": 1,
1137                 "mparams": [{
1138                         "is_vararg": false,
1139                         "name": "f",
1140                         "mtype": {
1141                                 "full_name": "test_prog::Float"
1142                         }
1143                 }],
1144                 "return_mtype": {
1145                         "full_name": "test_prog::Float"
1146                 },
1147                 "vararg_rank": -1
1148         }
1149 }
1150 {
1151         "name": ">",
1152         "class_name": "MMethodDef",
1153         "full_name": "test_prog$Float$>",
1154         "mdoc": null,
1155         "visibility": "public",
1156         "modifiers": ["public", "intern", "fun"],
1157         "location": {
1158                 "column_end": 32,
1159                 "column_start": 2,
1160                 "line_end": 49,
1161                 "line_start": 49,
1162                 "file": "test_location"
1163         },
1164         "is_intro": true,
1165         "mclassdef": {
1166                 "full_name": "test_prog$Float"
1167         },
1168         "mproperty": {
1169                 "full_name": "test_prog::Float::>"
1170         },
1171         "intro": {
1172                 "full_name": "test_prog$Float$>"
1173         },
1174         "intro_mclassdef": {
1175                 "full_name": "test_prog$Float"
1176         },
1177         "mmodule": {
1178                 "full_name": "test_prog::platform"
1179         },
1180         "mgroup": {
1181                 "full_name": "test_prog>platform>"
1182         },
1183         "mpackage": {
1184                 "full_name": "test_prog"
1185         },
1186         "msignature": {
1187                 "arity": 1,
1188                 "mparams": [{
1189                         "is_vararg": false,
1190                         "name": "f",
1191                         "mtype": {
1192                                 "full_name": "test_prog::Float"
1193                         }
1194                 }],
1195                 "return_mtype": {
1196                         "full_name": "test_prog::Bool"
1197                 },
1198                 "vararg_rank": -1
1199         }
1200 }
1201 {
1202         "name": "_strength_bonus",
1203         "class_name": "MAttributeDef",
1204         "full_name": "test_prog$Career$_strength_bonus",
1205         "mdoc": null,
1206         "visibility": "private",
1207         "modifiers": ["private", "var"],
1208         "location": {
1209                 "column_end": 24,
1210                 "column_start": 2,
1211                 "line_end": 31,
1212                 "line_start": 31,
1213                 "file": "test_location"
1214         },
1215         "is_intro": true,
1216         "mclassdef": {
1217                 "full_name": "test_prog$Career"
1218         },
1219         "mproperty": {
1220                 "full_name": "test_prog::careers::Career::_strength_bonus"
1221         },
1222         "intro": {
1223                 "full_name": "test_prog$Career$_strength_bonus"
1224         },
1225         "intro_mclassdef": {
1226                 "full_name": "test_prog$Career"
1227         },
1228         "mmodule": {
1229                 "full_name": "test_prog::careers"
1230         },
1231         "mgroup": {
1232                 "full_name": "test_prog>rpg>"
1233         },
1234         "mpackage": {
1235                 "full_name": "test_prog"
1236         },
1237         "static_mtype": {
1238                 "full_name": "test_prog::Int"
1239         }
1240 }
1241 {
1242         "name": "strength_bonus",
1243         "class_name": "MMethodDef",
1244         "full_name": "test_prog$Career$strength_bonus",
1245         "mdoc": null,
1246         "visibility": "public",
1247         "modifiers": ["public", "fun"],
1248         "location": {
1249                 "column_end": 24,
1250                 "column_start": 2,
1251                 "line_end": 31,
1252                 "line_start": 31,
1253                 "file": "test_location"
1254         },
1255         "is_intro": true,
1256         "mclassdef": {
1257                 "full_name": "test_prog$Career"
1258         },
1259         "mproperty": {
1260                 "full_name": "test_prog::Career::strength_bonus"
1261         },
1262         "intro": {
1263                 "full_name": "test_prog$Career$strength_bonus"
1264         },
1265         "intro_mclassdef": {
1266                 "full_name": "test_prog$Career"
1267         },
1268         "mmodule": {
1269                 "full_name": "test_prog::careers"
1270         },
1271         "mgroup": {
1272                 "full_name": "test_prog>rpg>"
1273         },
1274         "mpackage": {
1275                 "full_name": "test_prog"
1276         },
1277         "msignature": {
1278                 "arity": 0,
1279                 "mparams": [],
1280                 "return_mtype": {
1281                         "full_name": "test_prog::Int"
1282                 },
1283                 "vararg_rank": -1
1284         }
1285 }
1286 {
1287         "name": "strength_bonus=",
1288         "class_name": "MMethodDef",
1289         "full_name": "test_prog$Career$strength_bonus=",
1290         "mdoc": null,
1291         "visibility": "protected",
1292         "modifiers": ["protected", "fun"],
1293         "location": {
1294                 "column_end": 24,
1295                 "column_start": 2,
1296                 "line_end": 31,
1297                 "line_start": 31,
1298                 "file": "test_location"
1299         },
1300         "is_intro": true,
1301         "mclassdef": {
1302                 "full_name": "test_prog$Career"
1303         },
1304         "mproperty": {
1305                 "full_name": "test_prog::Career::strength_bonus="
1306         },
1307         "intro": {
1308                 "full_name": "test_prog$Career$strength_bonus="
1309         },
1310         "intro_mclassdef": {
1311                 "full_name": "test_prog$Career"
1312         },
1313         "mmodule": {
1314                 "full_name": "test_prog::careers"
1315         },
1316         "mgroup": {
1317                 "full_name": "test_prog>rpg>"
1318         },
1319         "mpackage": {
1320                 "full_name": "test_prog"
1321         },
1322         "msignature": {
1323                 "arity": 1,
1324                 "mparams": [{
1325                         "is_vararg": false,
1326                         "name": "strength_bonus",
1327                         "mtype": {
1328                                 "full_name": "test_prog::Int"
1329                         }
1330                 }],
1331                 "return_mtype": null,
1332                 "vararg_rank": -1
1333         }
1334 }
1335 {
1336         "name": "_endurance_bonus",
1337         "class_name": "MAttributeDef",
1338         "full_name": "test_prog$Career$_endurance_bonus",
1339         "mdoc": null,
1340         "visibility": "private",
1341         "modifiers": ["private", "var"],
1342         "location": {
1343                 "column_end": 25,
1344                 "column_start": 2,
1345                 "line_end": 32,
1346                 "line_start": 32,
1347                 "file": "test_location"
1348         },
1349         "is_intro": true,
1350         "mclassdef": {
1351                 "full_name": "test_prog$Career"
1352         },
1353         "mproperty": {
1354                 "full_name": "test_prog::careers::Career::_endurance_bonus"
1355         },
1356         "intro": {
1357                 "full_name": "test_prog$Career$_endurance_bonus"
1358         },
1359         "intro_mclassdef": {
1360                 "full_name": "test_prog$Career"
1361         },
1362         "mmodule": {
1363                 "full_name": "test_prog::careers"
1364         },
1365         "mgroup": {
1366                 "full_name": "test_prog>rpg>"
1367         },
1368         "mpackage": {
1369                 "full_name": "test_prog"
1370         },
1371         "static_mtype": {
1372                 "full_name": "test_prog::Int"
1373         }
1374 }
1375 {
1376         "name": "endurance_bonus",
1377         "class_name": "MMethodDef",
1378         "full_name": "test_prog$Career$endurance_bonus",
1379         "mdoc": null,
1380         "visibility": "public",
1381         "modifiers": ["public", "fun"],
1382         "location": {
1383                 "column_end": 25,
1384                 "column_start": 2,
1385                 "line_end": 32,
1386                 "line_start": 32,
1387                 "file": "test_location"
1388         },
1389         "is_intro": true,
1390         "mclassdef": {
1391                 "full_name": "test_prog$Career"
1392         },
1393         "mproperty": {
1394                 "full_name": "test_prog::Career::endurance_bonus"
1395         },
1396         "intro": {
1397                 "full_name": "test_prog$Career$endurance_bonus"
1398         },
1399         "intro_mclassdef": {
1400                 "full_name": "test_prog$Career"
1401         },
1402         "mmodule": {
1403                 "full_name": "test_prog::careers"
1404         },
1405         "mgroup": {
1406                 "full_name": "test_prog>rpg>"
1407         },
1408         "mpackage": {
1409                 "full_name": "test_prog"
1410         },
1411         "msignature": {
1412                 "arity": 0,
1413                 "mparams": [],
1414                 "return_mtype": {
1415                         "full_name": "test_prog::Int"
1416                 },
1417                 "vararg_rank": -1
1418         }
1419 }
1420 {
1421         "name": "endurance_bonus=",
1422         "class_name": "MMethodDef",
1423         "full_name": "test_prog$Career$endurance_bonus=",
1424         "mdoc": null,
1425         "visibility": "protected",
1426         "modifiers": ["protected", "fun"],
1427         "location": {
1428                 "column_end": 25,
1429                 "column_start": 2,
1430                 "line_end": 32,
1431                 "line_start": 32,
1432                 "file": "test_location"
1433         },
1434         "is_intro": true,
1435         "mclassdef": {
1436                 "full_name": "test_prog$Career"
1437         },
1438         "mproperty": {
1439                 "full_name": "test_prog::Career::endurance_bonus="
1440         },
1441         "intro": {
1442                 "full_name": "test_prog$Career$endurance_bonus="
1443         },
1444         "intro_mclassdef": {
1445                 "full_name": "test_prog$Career"
1446         },
1447         "mmodule": {
1448                 "full_name": "test_prog::careers"
1449         },
1450         "mgroup": {
1451                 "full_name": "test_prog>rpg>"
1452         },
1453         "mpackage": {
1454                 "full_name": "test_prog"
1455         },
1456         "msignature": {
1457                 "arity": 1,
1458                 "mparams": [{
1459                         "is_vararg": false,
1460                         "name": "endurance_bonus",
1461                         "mtype": {
1462                                 "full_name": "test_prog::Int"
1463                         }
1464                 }],
1465                 "return_mtype": null,
1466                 "vararg_rank": -1
1467         }
1468 }
1469 {
1470         "name": "_intelligence_bonus",
1471         "class_name": "MAttributeDef",
1472         "full_name": "test_prog$Career$_intelligence_bonus",
1473         "mdoc": null,
1474         "visibility": "private",
1475         "modifiers": ["private", "var"],
1476         "location": {
1477                 "column_end": 28,
1478                 "column_start": 2,
1479                 "line_end": 33,
1480                 "line_start": 33,
1481                 "file": "test_location"
1482         },
1483         "is_intro": true,
1484         "mclassdef": {
1485                 "full_name": "test_prog$Career"
1486         },
1487         "mproperty": {
1488                 "full_name": "test_prog::careers::Career::_intelligence_bonus"
1489         },
1490         "intro": {
1491                 "full_name": "test_prog$Career$_intelligence_bonus"
1492         },
1493         "intro_mclassdef": {
1494                 "full_name": "test_prog$Career"
1495         },
1496         "mmodule": {
1497                 "full_name": "test_prog::careers"
1498         },
1499         "mgroup": {
1500                 "full_name": "test_prog>rpg>"
1501         },
1502         "mpackage": {
1503                 "full_name": "test_prog"
1504         },
1505         "static_mtype": {
1506                 "full_name": "test_prog::Int"
1507         }
1508 }
1509 {
1510         "name": "intelligence_bonus",
1511         "class_name": "MMethodDef",
1512         "full_name": "test_prog$Career$intelligence_bonus",
1513         "mdoc": null,
1514         "visibility": "public",
1515         "modifiers": ["public", "fun"],
1516         "location": {
1517                 "column_end": 28,
1518                 "column_start": 2,
1519                 "line_end": 33,
1520                 "line_start": 33,
1521                 "file": "test_location"
1522         },
1523         "is_intro": true,
1524         "mclassdef": {
1525                 "full_name": "test_prog$Career"
1526         },
1527         "mproperty": {
1528                 "full_name": "test_prog::Career::intelligence_bonus"
1529         },
1530         "intro": {
1531                 "full_name": "test_prog$Career$intelligence_bonus"
1532         },
1533         "intro_mclassdef": {
1534                 "full_name": "test_prog$Career"
1535         },
1536         "mmodule": {
1537                 "full_name": "test_prog::careers"
1538         },
1539         "mgroup": {
1540                 "full_name": "test_prog>rpg>"
1541         },
1542         "mpackage": {
1543                 "full_name": "test_prog"
1544         },
1545         "msignature": {
1546                 "arity": 0,
1547                 "mparams": [],
1548                 "return_mtype": {
1549                         "full_name": "test_prog::Int"
1550                 },
1551                 "vararg_rank": -1
1552         }
1553 }
1554 {
1555         "name": "intelligence_bonus=",
1556         "class_name": "MMethodDef",
1557         "full_name": "test_prog$Career$intelligence_bonus=",
1558         "mdoc": null,
1559         "visibility": "protected",
1560         "modifiers": ["protected", "fun"],
1561         "location": {
1562                 "column_end": 28,
1563                 "column_start": 2,
1564                 "line_end": 33,
1565                 "line_start": 33,
1566                 "file": "test_location"
1567         },
1568         "is_intro": true,
1569         "mclassdef": {
1570                 "full_name": "test_prog$Career"
1571         },
1572         "mproperty": {
1573                 "full_name": "test_prog::Career::intelligence_bonus="
1574         },
1575         "intro": {
1576                 "full_name": "test_prog$Career$intelligence_bonus="
1577         },
1578         "intro_mclassdef": {
1579                 "full_name": "test_prog$Career"
1580         },
1581         "mmodule": {
1582                 "full_name": "test_prog::careers"
1583         },
1584         "mgroup": {
1585                 "full_name": "test_prog>rpg>"
1586         },
1587         "mpackage": {
1588                 "full_name": "test_prog"
1589         },
1590         "msignature": {
1591                 "arity": 1,
1592                 "mparams": [{
1593                         "is_vararg": false,
1594                         "name": "intelligence_bonus",
1595                         "mtype": {
1596                                 "full_name": "test_prog::Int"
1597                         }
1598                 }],
1599                 "return_mtype": null,
1600                 "vararg_rank": -1
1601         }
1602 }
1603 {
1604         "name": "_base_strength",
1605         "class_name": "MAttributeDef",
1606         "full_name": "test_prog$Race$_base_strength",
1607         "mdoc": {
1608                 "content": "Used to represents how strong the race is.",
1609                 "location": {
1610                         "column_end": 0,
1611                         "column_start": 2,
1612                         "line_end": 36,
1613                         "line_start": 35,
1614                         "file": "test_location"
1615                 }
1616         },
1617         "visibility": "private",
1618         "modifiers": ["private", "var"],
1619         "location": {
1620                 "column_end": 23,
1621                 "column_start": 2,
1622                 "line_end": 36,
1623                 "line_start": 35,
1624                 "file": "test_location"
1625         },
1626         "is_intro": true,
1627         "mclassdef": {
1628                 "full_name": "test_prog$Race"
1629         },
1630         "mproperty": {
1631                 "full_name": "test_prog::races::Race::_base_strength"
1632         },
1633         "intro": {
1634                 "full_name": "test_prog$Race$_base_strength"
1635         },
1636         "intro_mclassdef": {
1637                 "full_name": "test_prog$Race"
1638         },
1639         "mmodule": {
1640                 "full_name": "test_prog::races"
1641         },
1642         "mgroup": {
1643                 "full_name": "test_prog>rpg>"
1644         },
1645         "mpackage": {
1646                 "full_name": "test_prog"
1647         },
1648         "static_mtype": {
1649                 "full_name": "test_prog::Int"
1650         }
1651 }
1652 {
1653         "name": "base_strength",
1654         "class_name": "MMethodDef",
1655         "full_name": "test_prog$Race$base_strength",
1656         "mdoc": {
1657                 "content": "Used to represents how strong the race is.",
1658                 "location": {
1659                         "column_end": 0,
1660                         "column_start": 2,
1661                         "line_end": 36,
1662                         "line_start": 35,
1663                         "file": "test_location"
1664                 }
1665         },
1666         "visibility": "public",
1667         "modifiers": ["public", "fun"],
1668         "location": {
1669                 "column_end": 23,
1670                 "column_start": 2,
1671                 "line_end": 36,
1672                 "line_start": 35,
1673                 "file": "test_location"
1674         },
1675         "is_intro": true,
1676         "mclassdef": {
1677                 "full_name": "test_prog$Race"
1678         },
1679         "mproperty": {
1680                 "full_name": "test_prog::Race::base_strength"
1681         },
1682         "intro": {
1683                 "full_name": "test_prog$Race$base_strength"
1684         },
1685         "intro_mclassdef": {
1686                 "full_name": "test_prog$Race"
1687         },
1688         "mmodule": {
1689                 "full_name": "test_prog::races"
1690         },
1691         "mgroup": {
1692                 "full_name": "test_prog>rpg>"
1693         },
1694         "mpackage": {
1695                 "full_name": "test_prog"
1696         },
1697         "msignature": {
1698                 "arity": 0,
1699                 "mparams": [],
1700                 "return_mtype": {
1701                         "full_name": "test_prog::Int"
1702                 },
1703                 "vararg_rank": -1
1704         }
1705 }
1706 {
1707         "name": "base_strength=",
1708         "class_name": "MMethodDef",
1709         "full_name": "test_prog$Race$base_strength=",
1710         "mdoc": {
1711                 "content": "Used to represents how strong the race is.",
1712                 "location": {
1713                         "column_end": 0,
1714                         "column_start": 2,
1715                         "line_end": 36,
1716                         "line_start": 35,
1717                         "file": "test_location"
1718                 }
1719         },
1720         "visibility": "protected",
1721         "modifiers": ["protected", "fun"],
1722         "location": {
1723                 "column_end": 23,
1724                 "column_start": 2,
1725                 "line_end": 36,
1726                 "line_start": 35,
1727                 "file": "test_location"
1728         },
1729         "is_intro": true,
1730         "mclassdef": {
1731                 "full_name": "test_prog$Race"
1732         },
1733         "mproperty": {
1734                 "full_name": "test_prog::Race::base_strength="
1735         },
1736         "intro": {
1737                 "full_name": "test_prog$Race$base_strength="
1738         },
1739         "intro_mclassdef": {
1740                 "full_name": "test_prog$Race"
1741         },
1742         "mmodule": {
1743                 "full_name": "test_prog::races"
1744         },
1745         "mgroup": {
1746                 "full_name": "test_prog>rpg>"
1747         },
1748         "mpackage": {
1749                 "full_name": "test_prog"
1750         },
1751         "msignature": {
1752                 "arity": 1,
1753                 "mparams": [{
1754                         "is_vararg": false,
1755                         "name": "base_strength",
1756                         "mtype": {
1757                                 "full_name": "test_prog::Int"
1758                         }
1759                 }],
1760                 "return_mtype": null,
1761                 "vararg_rank": -1
1762         }
1763 }
1764 {
1765         "name": "_base_endurance",
1766         "class_name": "MAttributeDef",
1767         "full_name": "test_prog$Race$_base_endurance",
1768         "mdoc": {
1769                 "content": "Used to represents how the race can absorb damage.",
1770                 "location": {
1771                         "column_end": 0,
1772                         "column_start": 2,
1773                         "line_end": 39,
1774                         "line_start": 38,
1775                         "file": "test_location"
1776                 }
1777         },
1778         "visibility": "private",
1779         "modifiers": ["private", "var"],
1780         "location": {
1781                 "column_end": 24,
1782                 "column_start": 2,
1783                 "line_end": 39,
1784                 "line_start": 38,
1785                 "file": "test_location"
1786         },
1787         "is_intro": true,
1788         "mclassdef": {
1789                 "full_name": "test_prog$Race"
1790         },
1791         "mproperty": {
1792                 "full_name": "test_prog::races::Race::_base_endurance"
1793         },
1794         "intro": {
1795                 "full_name": "test_prog$Race$_base_endurance"
1796         },
1797         "intro_mclassdef": {
1798                 "full_name": "test_prog$Race"
1799         },
1800         "mmodule": {
1801                 "full_name": "test_prog::races"
1802         },
1803         "mgroup": {
1804                 "full_name": "test_prog>rpg>"
1805         },
1806         "mpackage": {
1807                 "full_name": "test_prog"
1808         },
1809         "static_mtype": {
1810                 "full_name": "test_prog::Int"
1811         }
1812 }
1813 {
1814         "name": "base_endurance",
1815         "class_name": "MMethodDef",
1816         "full_name": "test_prog$Race$base_endurance",
1817         "mdoc": {
1818                 "content": "Used to represents how the race can absorb damage.",
1819                 "location": {
1820                         "column_end": 0,
1821                         "column_start": 2,
1822                         "line_end": 39,
1823                         "line_start": 38,
1824                         "file": "test_location"
1825                 }
1826         },
1827         "visibility": "public",
1828         "modifiers": ["public", "fun"],
1829         "location": {
1830                 "column_end": 24,
1831                 "column_start": 2,
1832                 "line_end": 39,
1833                 "line_start": 38,
1834                 "file": "test_location"
1835         },
1836         "is_intro": true,
1837         "mclassdef": {
1838                 "full_name": "test_prog$Race"
1839         },
1840         "mproperty": {
1841                 "full_name": "test_prog::Race::base_endurance"
1842         },
1843         "intro": {
1844                 "full_name": "test_prog$Race$base_endurance"
1845         },
1846         "intro_mclassdef": {
1847                 "full_name": "test_prog$Race"
1848         },
1849         "mmodule": {
1850                 "full_name": "test_prog::races"
1851         },
1852         "mgroup": {
1853                 "full_name": "test_prog>rpg>"
1854         },
1855         "mpackage": {
1856                 "full_name": "test_prog"
1857         },
1858         "msignature": {
1859                 "arity": 0,
1860                 "mparams": [],
1861                 "return_mtype": {
1862                         "full_name": "test_prog::Int"
1863                 },
1864                 "vararg_rank": -1
1865         }
1866 }
1867 {
1868         "name": "base_endurance=",
1869         "class_name": "MMethodDef",
1870         "full_name": "test_prog$Race$base_endurance=",
1871         "mdoc": {
1872                 "content": "Used to represents how the race can absorb damage.",
1873                 "location": {
1874                         "column_end": 0,
1875                         "column_start": 2,
1876                         "line_end": 39,
1877                         "line_start": 38,
1878                         "file": "test_location"
1879                 }
1880         },
1881         "visibility": "protected",
1882         "modifiers": ["protected", "fun"],
1883         "location": {
1884                 "column_end": 24,
1885                 "column_start": 2,
1886                 "line_end": 39,
1887                 "line_start": 38,
1888                 "file": "test_location"
1889         },
1890         "is_intro": true,
1891         "mclassdef": {
1892                 "full_name": "test_prog$Race"
1893         },
1894         "mproperty": {
1895                 "full_name": "test_prog::Race::base_endurance="
1896         },
1897         "intro": {
1898                 "full_name": "test_prog$Race$base_endurance="
1899         },
1900         "intro_mclassdef": {
1901                 "full_name": "test_prog$Race"
1902         },
1903         "mmodule": {
1904                 "full_name": "test_prog::races"
1905         },
1906         "mgroup": {
1907                 "full_name": "test_prog>rpg>"
1908         },
1909         "mpackage": {
1910                 "full_name": "test_prog"
1911         },
1912         "msignature": {
1913                 "arity": 1,
1914                 "mparams": [{
1915                         "is_vararg": false,
1916                         "name": "base_endurance",
1917                         "mtype": {
1918                                 "full_name": "test_prog::Int"
1919                         }
1920                 }],
1921                 "return_mtype": null,
1922                 "vararg_rank": -1
1923         }
1924 }
1925 {
1926         "name": "_base_intelligence",
1927         "class_name": "MAttributeDef",
1928         "full_name": "test_prog$Race$_base_intelligence",
1929         "mdoc": {
1930                 "content": "Is this race smart?",
1931                 "location": {
1932                         "column_end": 0,
1933                         "column_start": 2,
1934                         "line_end": 42,
1935                         "line_start": 41,
1936                         "file": "test_location"
1937                 }
1938         },
1939         "visibility": "private",
1940         "modifiers": ["private", "var"],
1941         "location": {
1942                 "column_end": 27,
1943                 "column_start": 2,
1944                 "line_end": 42,
1945                 "line_start": 41,
1946                 "file": "test_location"
1947         },
1948         "is_intro": true,
1949         "mclassdef": {
1950                 "full_name": "test_prog$Race"
1951         },
1952         "mproperty": {
1953                 "full_name": "test_prog::races::Race::_base_intelligence"
1954         },
1955         "intro": {
1956                 "full_name": "test_prog$Race$_base_intelligence"
1957         },
1958         "intro_mclassdef": {
1959                 "full_name": "test_prog$Race"
1960         },
1961         "mmodule": {
1962                 "full_name": "test_prog::races"
1963         },
1964         "mgroup": {
1965                 "full_name": "test_prog>rpg>"
1966         },
1967         "mpackage": {
1968                 "full_name": "test_prog"
1969         },
1970         "static_mtype": {
1971                 "full_name": "test_prog::Int"
1972         }
1973 }
1974 {
1975         "name": "base_intelligence",
1976         "class_name": "MMethodDef",
1977         "full_name": "test_prog$Race$base_intelligence",
1978         "mdoc": {
1979                 "content": "Is this race smart?",
1980                 "location": {
1981                         "column_end": 0,
1982                         "column_start": 2,
1983                         "line_end": 42,
1984                         "line_start": 41,
1985                         "file": "test_location"
1986                 }
1987         },
1988         "visibility": "public",
1989         "modifiers": ["public", "fun"],
1990         "location": {
1991                 "column_end": 27,
1992                 "column_start": 2,
1993                 "line_end": 42,
1994                 "line_start": 41,
1995                 "file": "test_location"
1996         },
1997         "is_intro": true,
1998         "mclassdef": {
1999                 "full_name": "test_prog$Race"
2000         },
2001         "mproperty": {
2002                 "full_name": "test_prog::Race::base_intelligence"
2003         },
2004         "intro": {
2005                 "full_name": "test_prog$Race$base_intelligence"
2006         },
2007         "intro_mclassdef": {
2008                 "full_name": "test_prog$Race"
2009         },
2010         "mmodule": {
2011                 "full_name": "test_prog::races"
2012         },
2013         "mgroup": {
2014                 "full_name": "test_prog>rpg>"
2015         },
2016         "mpackage": {
2017                 "full_name": "test_prog"
2018         },
2019         "msignature": {
2020                 "arity": 0,
2021                 "mparams": [],
2022                 "return_mtype": {
2023                         "full_name": "test_prog::Int"
2024                 },
2025                 "vararg_rank": -1
2026         }
2027 }
2028 {
2029         "name": "base_intelligence=",
2030         "class_name": "MMethodDef",
2031         "full_name": "test_prog$Race$base_intelligence=",
2032         "mdoc": {
2033                 "content": "Is this race smart?",
2034                 "location": {
2035                         "column_end": 0,
2036                         "column_start": 2,
2037                         "line_end": 42,
2038                         "line_start": 41,
2039                         "file": "test_location"
2040                 }
2041         },
2042         "visibility": "protected",
2043         "modifiers": ["protected", "fun"],
2044         "location": {
2045                 "column_end": 27,
2046                 "column_start": 2,
2047                 "line_end": 42,
2048                 "line_start": 41,
2049                 "file": "test_location"
2050         },
2051         "is_intro": true,
2052         "mclassdef": {
2053                 "full_name": "test_prog$Race"
2054         },
2055         "mproperty": {
2056                 "full_name": "test_prog::Race::base_intelligence="
2057         },
2058         "intro": {
2059                 "full_name": "test_prog$Race$base_intelligence="
2060         },
2061         "intro_mclassdef": {
2062                 "full_name": "test_prog$Race"
2063         },
2064         "mmodule": {
2065                 "full_name": "test_prog::races"
2066         },
2067         "mgroup": {
2068                 "full_name": "test_prog>rpg>"
2069         },
2070         "mpackage": {
2071                 "full_name": "test_prog"
2072         },
2073         "msignature": {
2074                 "arity": 1,
2075                 "mparams": [{
2076                         "is_vararg": false,
2077                         "name": "base_intelligence",
2078                         "mtype": {
2079                                 "full_name": "test_prog::Int"
2080                         }
2081                 }],
2082                 "return_mtype": null,
2083                 "vararg_rank": -1
2084         }
2085 }
2086 {
2087         "name": "_race",
2088         "class_name": "MAttributeDef",
2089         "full_name": "test_prog$Character$_race",
2090         "mdoc": {
2091                 "content": "The `Race` of the character.",
2092                 "location": {
2093                         "column_end": 0,
2094                         "column_start": 2,
2095                         "line_end": 25,
2096                         "line_start": 24,
2097                         "file": "test_location"
2098                 }
2099         },
2100         "visibility": "private",
2101         "modifiers": ["private", "var"],
2102         "location": {
2103                 "column_end": 15,
2104                 "column_start": 2,
2105                 "line_end": 25,
2106                 "line_start": 24,
2107                 "file": "test_location"
2108         },
2109         "is_intro": true,
2110         "mclassdef": {
2111                 "full_name": "test_prog$Character"
2112         },
2113         "mproperty": {
2114                 "full_name": "test_prog::character::Character::_race"
2115         },
2116         "intro": {
2117                 "full_name": "test_prog$Character$_race"
2118         },
2119         "intro_mclassdef": {
2120                 "full_name": "test_prog$Character"
2121         },
2122         "mmodule": {
2123                 "full_name": "test_prog::character"
2124         },
2125         "mgroup": {
2126                 "full_name": "test_prog>rpg>"
2127         },
2128         "mpackage": {
2129                 "full_name": "test_prog"
2130         },
2131         "static_mtype": {
2132                 "full_name": "test_prog::Race"
2133         }
2134 }
2135 {
2136         "name": "race",
2137         "class_name": "MMethodDef",
2138         "full_name": "test_prog$Character$race",
2139         "mdoc": {
2140                 "content": "The `Race` of the character.",
2141                 "location": {
2142                         "column_end": 0,
2143                         "column_start": 2,
2144                         "line_end": 25,
2145                         "line_start": 24,
2146                         "file": "test_location"
2147                 }
2148         },
2149         "visibility": "public",
2150         "modifiers": ["public", "fun"],
2151         "location": {
2152                 "column_end": 15,
2153                 "column_start": 2,
2154                 "line_end": 25,
2155                 "line_start": 24,
2156                 "file": "test_location"
2157         },
2158         "is_intro": true,
2159         "mclassdef": {
2160                 "full_name": "test_prog$Character"
2161         },
2162         "mproperty": {
2163                 "full_name": "test_prog::Character::race"
2164         },
2165         "intro": {
2166                 "full_name": "test_prog$Character$race"
2167         },
2168         "intro_mclassdef": {
2169                 "full_name": "test_prog$Character"
2170         },
2171         "mmodule": {
2172                 "full_name": "test_prog::character"
2173         },
2174         "mgroup": {
2175                 "full_name": "test_prog>rpg>"
2176         },
2177         "mpackage": {
2178                 "full_name": "test_prog"
2179         },
2180         "msignature": {
2181                 "arity": 0,
2182                 "mparams": [],
2183                 "return_mtype": {
2184                         "full_name": "test_prog::Race"
2185                 },
2186                 "vararg_rank": -1
2187         }
2188 }
2189 {
2190         "name": "race=",
2191         "class_name": "MMethodDef",
2192         "full_name": "test_prog$Character$race=",
2193         "mdoc": {
2194                 "content": "The `Race` of the character.",
2195                 "location": {
2196                         "column_end": 0,
2197                         "column_start": 2,
2198                         "line_end": 25,
2199                         "line_start": 24,
2200                         "file": "test_location"
2201                 }
2202         },
2203         "visibility": "protected",
2204         "modifiers": ["protected", "fun"],
2205         "location": {
2206                 "column_end": 15,
2207                 "column_start": 2,
2208                 "line_end": 25,
2209                 "line_start": 24,
2210                 "file": "test_location"
2211         },
2212         "is_intro": true,
2213         "mclassdef": {
2214                 "full_name": "test_prog$Character"
2215         },
2216         "mproperty": {
2217                 "full_name": "test_prog::Character::race="
2218         },
2219         "intro": {
2220                 "full_name": "test_prog$Character$race="
2221         },
2222         "intro_mclassdef": {
2223                 "full_name": "test_prog$Character"
2224         },
2225         "mmodule": {
2226                 "full_name": "test_prog::character"
2227         },
2228         "mgroup": {
2229                 "full_name": "test_prog>rpg>"
2230         },
2231         "mpackage": {
2232                 "full_name": "test_prog"
2233         },
2234         "msignature": {
2235                 "arity": 1,
2236                 "mparams": [{
2237                         "is_vararg": false,
2238                         "name": "race",
2239                         "mtype": {
2240                                 "full_name": "test_prog::Race"
2241                         }
2242                 }],
2243                 "return_mtype": null,
2244                 "vararg_rank": -1
2245         }
2246 }
2247 {
2248         "name": "_career",
2249         "class_name": "MAttributeDef",
2250         "full_name": "test_prog$Character$_career",
2251         "mdoc": {
2252                 "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
2253                 "location": {
2254                         "column_end": 0,
2255                         "column_start": 2,
2256                         "line_end": 29,
2257                         "line_start": 27,
2258                         "file": "test_location"
2259                 }
2260         },
2261         "visibility": "private",
2262         "modifiers": ["private", "var"],
2263         "location": {
2264                 "column_end": 47,
2265                 "column_start": 2,
2266                 "line_end": 29,
2267                 "line_start": 27,
2268                 "file": "test_location"
2269         },
2270         "is_intro": true,
2271         "mclassdef": {
2272                 "full_name": "test_prog$Character"
2273         },
2274         "mproperty": {
2275                 "full_name": "test_prog::character::Character::_career"
2276         },
2277         "intro": {
2278                 "full_name": "test_prog$Character$_career"
2279         },
2280         "intro_mclassdef": {
2281                 "full_name": "test_prog$Character"
2282         },
2283         "mmodule": {
2284                 "full_name": "test_prog::character"
2285         },
2286         "mgroup": {
2287                 "full_name": "test_prog>rpg>"
2288         },
2289         "mpackage": {
2290                 "full_name": "test_prog"
2291         },
2292         "static_mtype": {
2293                 "full_name": "nullable test_prog::Career"
2294         }
2295 }
2296 {
2297         "name": "career",
2298         "class_name": "MMethodDef",
2299         "full_name": "test_prog$Character$career",
2300         "mdoc": {
2301                 "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
2302                 "location": {
2303                         "column_end": 0,
2304                         "column_start": 2,
2305                         "line_end": 29,
2306                         "line_start": 27,
2307                         "file": "test_location"
2308                 }
2309         },
2310         "visibility": "public",
2311         "modifiers": ["public", "fun"],
2312         "location": {
2313                 "column_end": 47,
2314                 "column_start": 2,
2315                 "line_end": 29,
2316                 "line_start": 27,
2317                 "file": "test_location"
2318         },
2319         "is_intro": true,
2320         "mclassdef": {
2321                 "full_name": "test_prog$Character"
2322         },
2323         "mproperty": {
2324                 "full_name": "test_prog::Character::career"
2325         },
2326         "intro": {
2327                 "full_name": "test_prog$Character$career"
2328         },
2329         "intro_mclassdef": {
2330                 "full_name": "test_prog$Character"
2331         },
2332         "mmodule": {
2333                 "full_name": "test_prog::character"
2334         },
2335         "mgroup": {
2336                 "full_name": "test_prog>rpg>"
2337         },
2338         "mpackage": {
2339                 "full_name": "test_prog"
2340         },
2341         "msignature": {
2342                 "arity": 0,
2343                 "mparams": [],
2344                 "return_mtype": {
2345                         "full_name": "nullable test_prog::Career"
2346                 },
2347                 "vararg_rank": -1
2348         }
2349 }
2350 {
2351         "name": "career=",
2352         "class_name": "MMethodDef",
2353         "full_name": "test_prog$Character$career=",
2354         "mdoc": {
2355                 "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
2356                 "location": {
2357                         "column_end": 0,
2358                         "column_start": 2,
2359                         "line_end": 29,
2360                         "line_start": 27,
2361                         "file": "test_location"
2362                 }
2363         },
2364         "visibility": "public",
2365         "modifiers": ["public", "fun"],
2366         "location": {
2367                 "column_end": 47,
2368                 "column_start": 2,
2369                 "line_end": 29,
2370                 "line_start": 27,
2371                 "file": "test_location"
2372         },
2373         "is_intro": true,
2374         "mclassdef": {
2375                 "full_name": "test_prog$Character"
2376         },
2377         "mproperty": {
2378                 "full_name": "test_prog::Character::career="
2379         },
2380         "intro": {
2381                 "full_name": "test_prog$Character$career="
2382         },
2383         "intro_mclassdef": {
2384                 "full_name": "test_prog$Character"
2385         },
2386         "mmodule": {
2387                 "full_name": "test_prog::character"
2388         },
2389         "mgroup": {
2390                 "full_name": "test_prog>rpg>"
2391         },
2392         "mpackage": {
2393                 "full_name": "test_prog"
2394         },
2395         "msignature": {
2396                 "arity": 1,
2397                 "mparams": [{
2398                         "is_vararg": false,
2399                         "name": "career",
2400                         "mtype": {
2401                                 "full_name": "nullable test_prog::Career"
2402                         }
2403                 }],
2404                 "return_mtype": null,
2405                 "vararg_rank": -1
2406         }
2407 }
2408 {
2409         "name": "quit",
2410         "class_name": "MMethodDef",
2411         "full_name": "test_prog$Character$quit",
2412         "mdoc": null,
2413         "visibility": "public",
2414         "modifiers": ["public", "fun"],
2415         "location": {
2416                 "column_end": 4,
2417                 "column_start": 2,
2418                 "line_end": 33,
2419                 "line_start": 31,
2420                 "file": "test_location"
2421         },
2422         "is_intro": true,
2423         "mclassdef": {
2424                 "full_name": "test_prog$Character"
2425         },
2426         "mproperty": {
2427                 "full_name": "test_prog::Character::quit"
2428         },
2429         "intro": {
2430                 "full_name": "test_prog$Character$quit"
2431         },
2432         "intro_mclassdef": {
2433                 "full_name": "test_prog$Character"
2434         },
2435         "mmodule": {
2436                 "full_name": "test_prog::character"
2437         },
2438         "mgroup": {
2439                 "full_name": "test_prog>rpg>"
2440         },
2441         "mpackage": {
2442                 "full_name": "test_prog"
2443         },
2444         "msignature": {
2445                 "arity": 0,
2446                 "mparams": [],
2447                 "return_mtype": null,
2448                 "vararg_rank": -1
2449         }
2450 }
2451 {
2452         "name": "_name",
2453         "class_name": "MAttributeDef",
2454         "full_name": "test_prog$Character$_name",
2455         "mdoc": null,
2456         "visibility": "private",
2457         "modifiers": ["private", "var"],
2458         "location": {
2459                 "column_end": 17,
2460                 "column_start": 2,
2461                 "line_end": 35,
2462                 "line_start": 35,
2463                 "file": "test_location"
2464         },
2465         "is_intro": true,
2466         "mclassdef": {
2467                 "full_name": "test_prog$Character"
2468         },
2469         "mproperty": {
2470                 "full_name": "test_prog::character::Character::_name"
2471         },
2472         "intro": {
2473                 "full_name": "test_prog$Character$_name"
2474         },
2475         "intro_mclassdef": {
2476                 "full_name": "test_prog$Character"
2477         },
2478         "mmodule": {
2479                 "full_name": "test_prog::character"
2480         },
2481         "mgroup": {
2482                 "full_name": "test_prog>rpg>"
2483         },
2484         "mpackage": {
2485                 "full_name": "test_prog"
2486         },
2487         "static_mtype": {
2488                 "full_name": "test_prog::String"
2489         }
2490 }
2491 {
2492         "name": "name",
2493         "class_name": "MMethodDef",
2494         "full_name": "test_prog$Character$name",
2495         "mdoc": null,
2496         "visibility": "public",
2497         "modifiers": ["public", "fun"],
2498         "location": {
2499                 "column_end": 17,
2500                 "column_start": 2,
2501                 "line_end": 35,
2502                 "line_start": 35,
2503                 "file": "test_location"
2504         },
2505         "is_intro": true,
2506         "mclassdef": {
2507                 "full_name": "test_prog$Character"
2508         },
2509         "mproperty": {
2510                 "full_name": "test_prog::Character::name"
2511         },
2512         "intro": {
2513                 "full_name": "test_prog$Character$name"
2514         },
2515         "intro_mclassdef": {
2516                 "full_name": "test_prog$Character"
2517         },
2518         "mmodule": {
2519                 "full_name": "test_prog::character"
2520         },
2521         "mgroup": {
2522                 "full_name": "test_prog>rpg>"
2523         },
2524         "mpackage": {
2525                 "full_name": "test_prog"
2526         },
2527         "msignature": {
2528                 "arity": 0,
2529                 "mparams": [],
2530                 "return_mtype": {
2531                         "full_name": "test_prog::String"
2532                 },
2533                 "vararg_rank": -1
2534         }
2535 }
2536 {
2537         "name": "name=",
2538         "class_name": "MMethodDef",
2539         "full_name": "test_prog$Character$name=",
2540         "mdoc": null,
2541         "visibility": "protected",
2542         "modifiers": ["protected", "fun"],
2543         "location": {
2544                 "column_end": 17,
2545                 "column_start": 2,
2546                 "line_end": 35,
2547                 "line_start": 35,
2548                 "file": "test_location"
2549         },
2550         "is_intro": true,
2551         "mclassdef": {
2552                 "full_name": "test_prog$Character"
2553         },
2554         "mproperty": {
2555                 "full_name": "test_prog::Character::name="
2556         },
2557         "intro": {
2558                 "full_name": "test_prog$Character$name="
2559         },
2560         "intro_mclassdef": {
2561                 "full_name": "test_prog$Character"
2562         },
2563         "mmodule": {
2564                 "full_name": "test_prog::character"
2565         },
2566         "mgroup": {
2567                 "full_name": "test_prog>rpg>"
2568         },
2569         "mpackage": {
2570                 "full_name": "test_prog"
2571         },
2572         "msignature": {
2573                 "arity": 1,
2574                 "mparams": [{
2575                         "is_vararg": false,
2576                         "name": "name",
2577                         "mtype": {
2578                                 "full_name": "test_prog::String"
2579                         }
2580                 }],
2581                 "return_mtype": null,
2582                 "vararg_rank": -1
2583         }
2584 }
2585 {
2586         "name": "_age",
2587         "class_name": "MAttributeDef",
2588         "full_name": "test_prog$Character$_age",
2589         "mdoc": null,
2590         "visibility": "private",
2591         "modifiers": ["private", "var"],
2592         "location": {
2593                 "column_end": 13,
2594                 "column_start": 2,
2595                 "line_end": 36,
2596                 "line_start": 36,
2597                 "file": "test_location"
2598         },
2599         "is_intro": true,
2600         "mclassdef": {
2601                 "full_name": "test_prog$Character"
2602         },
2603         "mproperty": {
2604                 "full_name": "test_prog::character::Character::_age"
2605         },
2606         "intro": {
2607                 "full_name": "test_prog$Character$_age"
2608         },
2609         "intro_mclassdef": {
2610                 "full_name": "test_prog$Character"
2611         },
2612         "mmodule": {
2613                 "full_name": "test_prog::character"
2614         },
2615         "mgroup": {
2616                 "full_name": "test_prog>rpg>"
2617         },
2618         "mpackage": {
2619                 "full_name": "test_prog"
2620         },
2621         "static_mtype": {
2622                 "full_name": "test_prog::Int"
2623         }
2624 }
2625 {
2626         "name": "age",
2627         "class_name": "MMethodDef",
2628         "full_name": "test_prog$Character$age",
2629         "mdoc": null,
2630         "visibility": "public",
2631         "modifiers": ["public", "fun"],
2632         "location": {
2633                 "column_end": 13,
2634                 "column_start": 2,
2635                 "line_end": 36,
2636                 "line_start": 36,
2637                 "file": "test_location"
2638         },
2639         "is_intro": true,
2640         "mclassdef": {
2641                 "full_name": "test_prog$Character"
2642         },
2643         "mproperty": {
2644                 "full_name": "test_prog::Character::age"
2645         },
2646         "intro": {
2647                 "full_name": "test_prog$Character$age"
2648         },
2649         "intro_mclassdef": {
2650                 "full_name": "test_prog$Character"
2651         },
2652         "mmodule": {
2653                 "full_name": "test_prog::character"
2654         },
2655         "mgroup": {
2656                 "full_name": "test_prog>rpg>"
2657         },
2658         "mpackage": {
2659                 "full_name": "test_prog"
2660         },
2661         "msignature": {
2662                 "arity": 0,
2663                 "mparams": [],
2664                 "return_mtype": {
2665                         "full_name": "test_prog::Int"
2666                 },
2667                 "vararg_rank": -1
2668         }
2669 }
2670 {
2671         "name": "age=",
2672         "class_name": "MMethodDef",
2673         "full_name": "test_prog$Character$age=",
2674         "mdoc": null,
2675         "visibility": "protected",
2676         "modifiers": ["protected", "fun"],
2677         "location": {
2678                 "column_end": 13,
2679                 "column_start": 2,
2680                 "line_end": 36,
2681                 "line_start": 36,
2682                 "file": "test_location"
2683         },
2684         "is_intro": true,
2685         "mclassdef": {
2686                 "full_name": "test_prog$Character"
2687         },
2688         "mproperty": {
2689                 "full_name": "test_prog::Character::age="
2690         },
2691         "intro": {
2692                 "full_name": "test_prog$Character$age="
2693         },
2694         "intro_mclassdef": {
2695                 "full_name": "test_prog$Character"
2696         },
2697         "mmodule": {
2698                 "full_name": "test_prog::character"
2699         },
2700         "mgroup": {
2701                 "full_name": "test_prog>rpg>"
2702         },
2703         "mpackage": {
2704                 "full_name": "test_prog"
2705         },
2706         "msignature": {
2707                 "arity": 1,
2708                 "mparams": [{
2709                         "is_vararg": false,
2710                         "name": "age",
2711                         "mtype": {
2712                                 "full_name": "test_prog::Int"
2713                         }
2714                 }],
2715                 "return_mtype": null,
2716                 "vararg_rank": -1
2717         }
2718 }
2719 {
2720         "name": "_sex",
2721         "class_name": "MAttributeDef",
2722         "full_name": "test_prog$Character$_sex",
2723         "mdoc": null,
2724         "visibility": "private",
2725         "modifiers": ["private", "var"],
2726         "location": {
2727                 "column_end": 14,
2728                 "column_start": 2,
2729                 "line_end": 37,
2730                 "line_start": 37,
2731                 "file": "test_location"
2732         },
2733         "is_intro": true,
2734         "mclassdef": {
2735                 "full_name": "test_prog$Character"
2736         },
2737         "mproperty": {
2738                 "full_name": "test_prog::character::Character::_sex"
2739         },
2740         "intro": {
2741                 "full_name": "test_prog$Character$_sex"
2742         },
2743         "intro_mclassdef": {
2744                 "full_name": "test_prog$Character"
2745         },
2746         "mmodule": {
2747                 "full_name": "test_prog::character"
2748         },
2749         "mgroup": {
2750                 "full_name": "test_prog>rpg>"
2751         },
2752         "mpackage": {
2753                 "full_name": "test_prog"
2754         },
2755         "static_mtype": {
2756                 "full_name": "test_prog::Bool"
2757         }
2758 }
2759 {
2760         "name": "sex",
2761         "class_name": "MMethodDef",
2762         "full_name": "test_prog$Character$sex",
2763         "mdoc": null,
2764         "visibility": "public",
2765         "modifiers": ["public", "fun"],
2766         "location": {
2767                 "column_end": 14,
2768                 "column_start": 2,
2769                 "line_end": 37,
2770                 "line_start": 37,
2771                 "file": "test_location"
2772         },
2773         "is_intro": true,
2774         "mclassdef": {
2775                 "full_name": "test_prog$Character"
2776         },
2777         "mproperty": {
2778                 "full_name": "test_prog::Character::sex"
2779         },
2780         "intro": {
2781                 "full_name": "test_prog$Character$sex"
2782         },
2783         "intro_mclassdef": {
2784                 "full_name": "test_prog$Character"
2785         },
2786         "mmodule": {
2787                 "full_name": "test_prog::character"
2788         },
2789         "mgroup": {
2790                 "full_name": "test_prog>rpg>"
2791         },
2792         "mpackage": {
2793                 "full_name": "test_prog"
2794         },
2795         "msignature": {
2796                 "arity": 0,
2797                 "mparams": [],
2798                 "return_mtype": {
2799                         "full_name": "test_prog::Bool"
2800                 },
2801                 "vararg_rank": -1
2802         }
2803 }
2804 {
2805         "name": "sex=",
2806         "class_name": "MMethodDef",
2807         "full_name": "test_prog$Character$sex=",
2808         "mdoc": null,
2809         "visibility": "protected",
2810         "modifiers": ["protected", "fun"],
2811         "location": {
2812                 "column_end": 14,
2813                 "column_start": 2,
2814                 "line_end": 37,
2815                 "line_start": 37,
2816                 "file": "test_location"
2817         },
2818         "is_intro": true,
2819         "mclassdef": {
2820                 "full_name": "test_prog$Character"
2821         },
2822         "mproperty": {
2823                 "full_name": "test_prog::Character::sex="
2824         },
2825         "intro": {
2826                 "full_name": "test_prog$Character$sex="
2827         },
2828         "intro_mclassdef": {
2829                 "full_name": "test_prog$Character"
2830         },
2831         "mmodule": {
2832                 "full_name": "test_prog::character"
2833         },
2834         "mgroup": {
2835                 "full_name": "test_prog>rpg>"
2836         },
2837         "mpackage": {
2838                 "full_name": "test_prog"
2839         },
2840         "msignature": {
2841                 "arity": 1,
2842                 "mparams": [{
2843                         "is_vararg": false,
2844                         "name": "sex",
2845                         "mtype": {
2846                                 "full_name": "test_prog::Bool"
2847                         }
2848                 }],
2849                 "return_mtype": null,
2850                 "vararg_rank": -1
2851         }
2852 }
2853 {
2854         "name": "total_strengh",
2855         "class_name": "MMethodDef",
2856         "full_name": "test_prog$Character$total_strengh",
2857         "mdoc": {
2858                 "content": "The actual strength of the character.\n\nReturns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.",
2859                 "location": {
2860                         "column_end": 0,
2861                         "column_start": 2,
2862                         "line_end": 42,
2863                         "line_start": 39,
2864                         "file": "test_location"
2865                 }
2866         },
2867         "visibility": "public",
2868         "modifiers": ["public", "fun"],
2869         "location": {
2870                 "column_end": 4,
2871                 "column_start": 2,
2872                 "line_end": 45,
2873                 "line_start": 39,
2874                 "file": "test_location"
2875         },
2876         "is_intro": true,
2877         "mclassdef": {
2878                 "full_name": "test_prog$Character"
2879         },
2880         "mproperty": {
2881                 "full_name": "test_prog::Character::total_strengh"
2882         },
2883         "intro": {
2884                 "full_name": "test_prog$Character$total_strengh"
2885         },
2886         "intro_mclassdef": {
2887                 "full_name": "test_prog$Character"
2888         },
2889         "mmodule": {
2890                 "full_name": "test_prog::character"
2891         },
2892         "mgroup": {
2893                 "full_name": "test_prog>rpg>"
2894         },
2895         "mpackage": {
2896                 "full_name": "test_prog"
2897         },
2898         "msignature": {
2899                 "arity": 0,
2900                 "mparams": [],
2901                 "return_mtype": {
2902                         "full_name": "test_prog::Int"
2903                 },
2904                 "vararg_rank": -1
2905         }
2906 }
2907 {
2908         "name": "total_endurance",
2909         "class_name": "MMethodDef",
2910         "full_name": "test_prog$Character$total_endurance",
2911         "mdoc": {
2912                 "content": "The actual endurance of the character.",
2913                 "location": {
2914                         "column_end": 0,
2915                         "column_start": 2,
2916                         "line_end": 48,
2917                         "line_start": 47,
2918                         "file": "test_location"
2919                 }
2920         },
2921         "visibility": "public",
2922         "modifiers": ["public", "fun"],
2923         "location": {
2924                 "column_end": 4,
2925                 "column_start": 2,
2926                 "line_end": 51,
2927                 "line_start": 47,
2928                 "file": "test_location"
2929         },
2930         "is_intro": true,
2931         "mclassdef": {
2932                 "full_name": "test_prog$Character"
2933         },
2934         "mproperty": {
2935                 "full_name": "test_prog::Character::total_endurance"
2936         },
2937         "intro": {
2938                 "full_name": "test_prog$Character$total_endurance"
2939         },
2940         "intro_mclassdef": {
2941                 "full_name": "test_prog$Character"
2942         },
2943         "mmodule": {
2944                 "full_name": "test_prog::character"
2945         },
2946         "mgroup": {
2947                 "full_name": "test_prog>rpg>"
2948         },
2949         "mpackage": {
2950                 "full_name": "test_prog"
2951         },
2952         "msignature": {
2953                 "arity": 0,
2954                 "mparams": [],
2955                 "return_mtype": {
2956                         "full_name": "test_prog::Int"
2957                 },
2958                 "vararg_rank": -1
2959         }
2960 }
2961 {
2962         "name": "total_intelligence",
2963         "class_name": "MMethodDef",
2964         "full_name": "test_prog$Character$total_intelligence",
2965         "mdoc": {
2966                 "content": "The acutal intelligence of the character.",
2967                 "location": {
2968                         "column_end": 0,
2969                         "column_start": 2,
2970                         "line_end": 54,
2971                         "line_start": 53,
2972                         "file": "test_location"
2973                 }
2974         },
2975         "visibility": "public",
2976         "modifiers": ["public", "fun"],
2977         "location": {
2978                 "column_end": 4,
2979                 "column_start": 2,
2980                 "line_end": 57,
2981                 "line_start": 53,
2982                 "file": "test_location"
2983         },
2984         "is_intro": true,
2985         "mclassdef": {
2986                 "full_name": "test_prog$Character"
2987         },
2988         "mproperty": {
2989                 "full_name": "test_prog::Character::total_intelligence"
2990         },
2991         "intro": {
2992                 "full_name": "test_prog$Character$total_intelligence"
2993         },
2994         "intro_mclassdef": {
2995                 "full_name": "test_prog$Character"
2996         },
2997         "mmodule": {
2998                 "full_name": "test_prog::character"
2999         },
3000         "mgroup": {
3001                 "full_name": "test_prog>rpg>"
3002         },
3003         "mpackage": {
3004                 "full_name": "test_prog"
3005         },
3006         "msignature": {
3007                 "arity": 0,
3008                 "mparams": [],
3009                 "return_mtype": {
3010                         "full_name": "test_prog::Int"
3011                 },
3012                 "vararg_rank": -1
3013         }
3014 }
3015 {
3016         "name": "max_health",
3017         "class_name": "MMethodDef",
3018         "full_name": "test_prog$Character$max_health",
3019         "mdoc": {
3020                 "content": "Maximum health of the character.\n\nBased on `total endurance * 10`.",
3021                 "location": {
3022                         "column_end": 0,
3023                         "column_start": 2,
3024                         "line_end": 62,
3025                         "line_start": 59,
3026                         "file": "test_location"
3027                 }
3028         },
3029         "visibility": "public",
3030         "modifiers": ["public", "fun"],
3031         "location": {
3032                 "column_end": 51,
3033                 "column_start": 2,
3034                 "line_end": 62,
3035                 "line_start": 59,
3036                 "file": "test_location"
3037         },
3038         "is_intro": true,
3039         "mclassdef": {
3040                 "full_name": "test_prog$Character"
3041         },
3042         "mproperty": {
3043                 "full_name": "test_prog::Character::max_health"
3044         },
3045         "intro": {
3046                 "full_name": "test_prog$Character$max_health"
3047         },
3048         "intro_mclassdef": {
3049                 "full_name": "test_prog$Character"
3050         },
3051         "mmodule": {
3052                 "full_name": "test_prog::character"
3053         },
3054         "mgroup": {
3055                 "full_name": "test_prog>rpg>"
3056         },
3057         "mpackage": {
3058                 "full_name": "test_prog"
3059         },
3060         "msignature": {
3061                 "arity": 0,
3062                 "mparams": [],
3063                 "return_mtype": {
3064                         "full_name": "test_prog::Int"
3065                 },
3066                 "vararg_rank": -1
3067         }
3068 }
3069 {
3070         "name": "_health",
3071         "class_name": "MAttributeDef",
3072         "full_name": "test_prog$Character$_health",
3073         "mdoc": {
3074                 "content": "The current `health` of the character.\n\nStarts at `max_health`.",
3075                 "location": {
3076                         "column_end": 0,
3077                         "column_start": 2,
3078                         "line_end": 67,
3079                         "line_start": 64,
3080                         "file": "test_location"
3081                 }
3082         },
3083         "visibility": "private",
3084         "modifiers": ["private", "var"],
3085         "location": {
3086                 "column_end": 29,
3087                 "column_start": 2,
3088                 "line_end": 67,
3089                 "line_start": 64,
3090                 "file": "test_location"
3091         },
3092         "is_intro": true,
3093         "mclassdef": {
3094                 "full_name": "test_prog$Character"
3095         },
3096         "mproperty": {
3097                 "full_name": "test_prog::character::Character::_health"
3098         },
3099         "intro": {
3100                 "full_name": "test_prog$Character$_health"
3101         },
3102         "intro_mclassdef": {
3103                 "full_name": "test_prog$Character"
3104         },
3105         "mmodule": {
3106                 "full_name": "test_prog::character"
3107         },
3108         "mgroup": {
3109                 "full_name": "test_prog>rpg>"
3110         },
3111         "mpackage": {
3112                 "full_name": "test_prog"
3113         },
3114         "static_mtype": {
3115                 "full_name": "test_prog::Int"
3116         }
3117 }
3118 {
3119         "name": "health",
3120         "class_name": "MMethodDef",
3121         "full_name": "test_prog$Character$health",
3122         "mdoc": {
3123                 "content": "The current `health` of the character.\n\nStarts at `max_health`.",
3124                 "location": {
3125                         "column_end": 0,
3126                         "column_start": 2,
3127                         "line_end": 67,
3128                         "line_start": 64,
3129                         "file": "test_location"
3130                 }
3131         },
3132         "visibility": "public",
3133         "modifiers": ["public", "fun"],
3134         "location": {
3135                 "column_end": 29,
3136                 "column_start": 2,
3137                 "line_end": 67,
3138                 "line_start": 64,
3139                 "file": "test_location"
3140         },
3141         "is_intro": true,
3142         "mclassdef": {
3143                 "full_name": "test_prog$Character"
3144         },
3145         "mproperty": {
3146                 "full_name": "test_prog::Character::health"
3147         },
3148         "intro": {
3149                 "full_name": "test_prog$Character$health"
3150         },
3151         "intro_mclassdef": {
3152                 "full_name": "test_prog$Character"
3153         },
3154         "mmodule": {
3155                 "full_name": "test_prog::character"
3156         },
3157         "mgroup": {
3158                 "full_name": "test_prog>rpg>"
3159         },
3160         "mpackage": {
3161                 "full_name": "test_prog"
3162         },
3163         "msignature": {
3164                 "arity": 0,
3165                 "mparams": [],
3166                 "return_mtype": {
3167                         "full_name": "test_prog::Int"
3168                 },
3169                 "vararg_rank": -1
3170         }
3171 }
3172 {
3173         "name": "health=",
3174         "class_name": "MMethodDef",
3175         "full_name": "test_prog$Character$health=",
3176         "mdoc": {
3177                 "content": "The current `health` of the character.\n\nStarts at `max_health`.",
3178                 "location": {
3179                         "column_end": 0,
3180                         "column_start": 2,
3181                         "line_end": 67,
3182                         "line_start": 64,
3183                         "file": "test_location"
3184                 }
3185         },
3186         "visibility": "protected",
3187         "modifiers": ["protected", "fun"],
3188         "location": {
3189                 "column_end": 29,
3190                 "column_start": 2,
3191                 "line_end": 67,
3192                 "line_start": 64,
3193                 "file": "test_location"
3194         },
3195         "is_intro": true,
3196         "mclassdef": {
3197                 "full_name": "test_prog$Character"
3198         },
3199         "mproperty": {
3200                 "full_name": "test_prog::Character::health="
3201         },
3202         "intro": {
3203                 "full_name": "test_prog$Character$health="
3204         },
3205         "intro_mclassdef": {
3206                 "full_name": "test_prog$Character"
3207         },
3208         "mmodule": {
3209                 "full_name": "test_prog::character"
3210         },
3211         "mgroup": {
3212                 "full_name": "test_prog>rpg>"
3213         },
3214         "mpackage": {
3215                 "full_name": "test_prog"
3216         },
3217         "msignature": {
3218                 "arity": 1,
3219                 "mparams": [{
3220                         "is_vararg": false,
3221                         "name": "health",
3222                         "mtype": {
3223                                 "full_name": "test_prog::Int"
3224                         }
3225                 }],
3226                 "return_mtype": null,
3227                 "vararg_rank": -1
3228         }
3229 }
3230 {
3231         "name": "dps",
3232         "class_name": "MMethodDef",
3233         "full_name": "test_prog$Weapon$dps",
3234         "mdoc": {
3235                 "content": "Damage per second inflicted by this weapon.",
3236                 "location": {
3237                         "column_end": 0,
3238                         "column_start": 2,
3239                         "line_end": 23,
3240                         "line_start": 22,
3241                         "file": "test_location"
3242                 }
3243         },
3244         "visibility": "public",
3245         "modifiers": ["public", "abstract", "fun"],
3246         "location": {
3247                 "column_end": 27,
3248                 "column_start": 2,
3249                 "line_end": 23,
3250                 "line_start": 22,
3251                 "file": "test_location"
3252         },
3253         "is_intro": true,
3254         "mclassdef": {
3255                 "full_name": "test_prog$Weapon"
3256         },
3257         "mproperty": {
3258                 "full_name": "test_prog::Weapon::dps"
3259         },
3260         "intro": {
3261                 "full_name": "test_prog$Weapon$dps"
3262         },
3263         "intro_mclassdef": {
3264                 "full_name": "test_prog$Weapon"
3265         },
3266         "mmodule": {
3267                 "full_name": "test_prog::combat"
3268         },
3269         "mgroup": {
3270                 "full_name": "test_prog>rpg>"
3271         },
3272         "mpackage": {
3273                 "full_name": "test_prog"
3274         },
3275         "msignature": {
3276                 "arity": 0,
3277                 "mparams": [],
3278                 "return_mtype": {
3279                         "full_name": "test_prog::Float"
3280                 },
3281                 "vararg_rank": -1
3282         }
3283 }
3284 {
3285         "name": "dps",
3286         "class_name": "MMethodDef",
3287         "full_name": "test_prog::combat$Dwarf$Weapon::dps",
3288         "mdoc": {
3289                 "content": "Dwarf `dps` are based on the dwarf `base_endurance` (represents weight here)",
3290                 "location": {
3291                         "column_end": 0,
3292                         "column_start": 2,
3293                         "line_end": 66,
3294                         "line_start": 65,
3295                         "file": "test_location"
3296                 }
3297         },
3298         "visibility": "public",
3299         "modifiers": ["redef", "fun"],
3300         "location": {
3301                 "column_end": 51,
3302                 "column_start": 2,
3303                 "line_end": 66,
3304                 "line_start": 65,
3305                 "file": "test_location"
3306         },
3307         "is_intro": false,
3308         "mclassdef": {
3309                 "full_name": "test_prog::combat$Dwarf"
3310         },
3311         "mproperty": {
3312                 "full_name": "test_prog::Weapon::dps"
3313         },
3314         "intro": {
3315                 "full_name": "test_prog$Weapon$dps"
3316         },
3317         "intro_mclassdef": {
3318                 "full_name": "test_prog$Weapon"
3319         },
3320         "mmodule": {
3321                 "full_name": "test_prog::combat"
3322         },
3323         "mgroup": {
3324                 "full_name": "test_prog>rpg>"
3325         },
3326         "mpackage": {
3327                 "full_name": "test_prog"
3328         },
3329         "msignature": {
3330                 "arity": 0,
3331                 "mparams": [],
3332                 "return_mtype": {
3333                         "full_name": "test_prog::Float"
3334                 },
3335                 "vararg_rank": -1
3336         }
3337 }
3338 {
3339         "name": "hit_points",
3340         "class_name": "MMethodDef",
3341         "full_name": "test_prog$Combatable$hit_points",
3342         "mdoc": null,
3343         "visibility": "public",
3344         "modifiers": ["public", "abstract", "fun"],
3345         "location": {
3346                 "column_end": 32,
3347                 "column_start": 2,
3348                 "line_end": 32,
3349                 "line_start": 32,
3350                 "file": "test_location"
3351         },
3352         "is_intro": true,
3353         "mclassdef": {
3354                 "full_name": "test_prog$Combatable"
3355         },
3356         "mproperty": {
3357                 "full_name": "test_prog::Combatable::hit_points"
3358         },
3359         "intro": {
3360                 "full_name": "test_prog$Combatable$hit_points"
3361         },
3362         "intro_mclassdef": {
3363                 "full_name": "test_prog$Combatable"
3364         },
3365         "mmodule": {
3366                 "full_name": "test_prog::combat"
3367         },
3368         "mgroup": {
3369                 "full_name": "test_prog>rpg>"
3370         },
3371         "mpackage": {
3372                 "full_name": "test_prog"
3373         },
3374         "msignature": {
3375                 "arity": 0,
3376                 "mparams": [],
3377                 "return_mtype": {
3378                         "full_name": "test_prog::Int"
3379                 },
3380                 "vararg_rank": -1
3381         }
3382 }
3383 {
3384         "name": "hit_points",
3385         "class_name": "MMethodDef",
3386         "full_name": "test_prog::combat$Character$Combatable::hit_points",
3387         "mdoc": {
3388                 "content": "Use character `health` to determines hit_points.",
3389                 "location": {
3390                         "column_end": 0,
3391                         "column_start": 2,
3392                         "line_end": 58,
3393                         "line_start": 57,
3394                         "file": "test_location"
3395                 }
3396         },
3397         "visibility": "public",
3398         "modifiers": ["redef", "fun"],
3399         "location": {
3400                 "column_end": 38,
3401                 "column_start": 2,
3402                 "line_end": 58,
3403                 "line_start": 57,
3404                 "file": "test_location"
3405         },
3406         "is_intro": false,
3407         "mclassdef": {
3408                 "full_name": "test_prog::combat$Character"
3409         },
3410         "mproperty": {
3411                 "full_name": "test_prog::Combatable::hit_points"
3412         },
3413         "intro": {
3414                 "full_name": "test_prog$Combatable$hit_points"
3415         },
3416         "intro_mclassdef": {
3417                 "full_name": "test_prog$Combatable"
3418         },
3419         "mmodule": {
3420                 "full_name": "test_prog::combat"
3421         },
3422         "mgroup": {
3423                 "full_name": "test_prog>rpg>"
3424         },
3425         "mpackage": {
3426                 "full_name": "test_prog"
3427         },
3428         "msignature": {
3429                 "arity": 0,
3430                 "mparams": [],
3431                 "return_mtype": {
3432                         "full_name": "test_prog::Int"
3433                 },
3434                 "vararg_rank": -1
3435         }
3436 }
3437 {
3438         "name": "attack",
3439         "class_name": "MMethodDef",
3440         "full_name": "test_prog$Combatable$attack",
3441         "mdoc": {
3442                 "content": "A `Combatable` can attack a `target` that is also a `Combatable`.\n\nAttack the `target` using `wepaon` and returns the number of inflicted hit points.",
3443                 "location": {
3444                         "column_end": 0,
3445                         "column_start": 2,
3446                         "line_end": 37,
3447                         "line_start": 34,
3448                         "file": "test_location"
3449                 }
3450         },
3451         "visibility": "public",
3452         "modifiers": ["public", "abstract", "fun"],
3453         "location": {
3454                 "column_end": 64,
3455                 "column_start": 2,
3456                 "line_end": 37,
3457                 "line_start": 34,
3458                 "file": "test_location"
3459         },
3460         "is_intro": true,
3461         "mclassdef": {
3462                 "full_name": "test_prog$Combatable"
3463         },
3464         "mproperty": {
3465                 "full_name": "test_prog::Combatable::attack"
3466         },
3467         "intro": {
3468                 "full_name": "test_prog$Combatable$attack"
3469         },
3470         "intro_mclassdef": {
3471                 "full_name": "test_prog$Combatable"
3472         },
3473         "mmodule": {
3474                 "full_name": "test_prog::combat"
3475         },
3476         "mgroup": {
3477                 "full_name": "test_prog>rpg>"
3478         },
3479         "mpackage": {
3480                 "full_name": "test_prog"
3481         },
3482         "msignature": {
3483                 "arity": 2,
3484                 "mparams": [{
3485                         "is_vararg": false,
3486                         "name": "target",
3487                         "mtype": {
3488                                 "full_name": "test_prog::Combatable"
3489                         }
3490                 }, {
3491                         "is_vararg": false,
3492                         "name": "weapon",
3493                         "mtype": {
3494                                 "full_name": "test_prog::Weapon"
3495                         }
3496                 }],
3497                 "return_mtype": {
3498                         "full_name": "test_prog::Int"
3499                 },
3500                 "vararg_rank": -1
3501         }
3502 }
3503 {
3504         "name": "direct_attack",
3505         "class_name": "MMethodDef",
3506         "full_name": "test_prog$Combatable$direct_attack",
3507         "mdoc": {
3508                 "content": "Like `attack` but cannot be defended.",
3509                 "location": {
3510                         "column_end": 0,
3511                         "column_start": 2,
3512                         "line_end": 40,
3513                         "line_start": 39,
3514                         "file": "test_location"
3515                 }
3516         },
3517         "visibility": "public",
3518         "modifiers": ["public", "abstract", "fun"],
3519         "location": {
3520                 "column_end": 71,
3521                 "column_start": 2,
3522                 "line_end": 40,
3523                 "line_start": 39,
3524                 "file": "test_location"
3525         },
3526         "is_intro": true,
3527         "mclassdef": {
3528                 "full_name": "test_prog$Combatable"
3529         },
3530         "mproperty": {
3531                 "full_name": "test_prog::Combatable::direct_attack"
3532         },
3533         "intro": {
3534                 "full_name": "test_prog$Combatable$direct_attack"
3535         },
3536         "intro_mclassdef": {
3537                 "full_name": "test_prog$Combatable"
3538         },
3539         "mmodule": {
3540                 "full_name": "test_prog::combat"
3541         },
3542         "mgroup": {
3543                 "full_name": "test_prog>rpg>"
3544         },
3545         "mpackage": {
3546                 "full_name": "test_prog"
3547         },
3548         "msignature": {
3549                 "arity": 2,
3550                 "mparams": [{
3551                         "is_vararg": false,
3552                         "name": "target",
3553                         "mtype": {
3554                                 "full_name": "test_prog::Combatable"
3555                         }
3556                 }, {
3557                         "is_vararg": false,
3558                         "name": "weapon",
3559                         "mtype": {
3560                                 "full_name": "test_prog::Weapon"
3561                         }
3562                 }],
3563                 "return_mtype": {
3564                         "full_name": "test_prog::Int"
3565                 },
3566                 "vararg_rank": -1
3567         }
3568 }
3569 {
3570         "name": "defend",
3571         "class_name": "MMethodDef",
3572         "full_name": "test_prog$Combatable$defend",
3573         "mdoc": {
3574                 "content": "`Combatable` can defend against attacks.\n\nDefends against a number of received hit points and return the number of pared hit points.\n\n@param hit: damage received.",
3575                 "location": {
3576                         "column_end": 0,
3577                         "column_start": 2,
3578                         "line_end": 47,
3579                         "line_start": 42,
3580                         "file": "test_location"
3581                 }
3582         },
3583         "visibility": "public",
3584         "modifiers": ["public", "abstract", "fun"],
3585         "location": {
3586                 "column_end": 38,
3587                 "column_start": 2,
3588                 "line_end": 47,
3589                 "line_start": 42,
3590                 "file": "test_location"
3591         },
3592         "is_intro": true,
3593         "mclassdef": {
3594                 "full_name": "test_prog$Combatable"
3595         },
3596         "mproperty": {
3597                 "full_name": "test_prog::Combatable::defend"
3598         },
3599         "intro": {
3600                 "full_name": "test_prog$Combatable$defend"
3601         },
3602         "intro_mclassdef": {
3603                 "full_name": "test_prog$Combatable"
3604         },
3605         "mmodule": {
3606                 "full_name": "test_prog::combat"
3607         },
3608         "mgroup": {
3609                 "full_name": "test_prog>rpg>"
3610         },
3611         "mpackage": {
3612                 "full_name": "test_prog"
3613         },
3614         "msignature": {
3615                 "arity": 1,
3616                 "mparams": [{
3617                         "is_vararg": false,
3618                         "name": "hit",
3619                         "mtype": {
3620                                 "full_name": "test_prog::Int"
3621                         }
3622                 }],
3623                 "return_mtype": {
3624                         "full_name": "test_prog::Int"
3625                 },
3626                 "vararg_rank": -1
3627         }
3628 }
3629 {
3630         "name": "is_dead",
3631         "class_name": "MMethodDef",
3632         "full_name": "test_prog$Combatable$is_dead",
3633         "mdoc": {
3634                 "content": "Is the character still have hit_points?",
3635                 "location": {
3636                         "column_end": 0,
3637                         "column_start": 2,
3638                         "line_end": 50,
3639                         "line_start": 49,
3640                         "file": "test_location"
3641                 }
3642         },
3643         "visibility": "public",
3644         "modifiers": ["public", "fun"],
3645         "location": {
3646                 "column_end": 43,
3647                 "column_start": 2,
3648                 "line_end": 50,
3649                 "line_start": 49,
3650                 "file": "test_location"
3651         },
3652         "is_intro": true,
3653         "mclassdef": {
3654                 "full_name": "test_prog$Combatable"
3655         },
3656         "mproperty": {
3657                 "full_name": "test_prog::Combatable::is_dead"
3658         },
3659         "intro": {
3660                 "full_name": "test_prog$Combatable$is_dead"
3661         },
3662         "intro_mclassdef": {
3663                 "full_name": "test_prog$Combatable"
3664         },
3665         "mmodule": {
3666                 "full_name": "test_prog::combat"
3667         },
3668         "mgroup": {
3669                 "full_name": "test_prog>rpg>"
3670         },
3671         "mpackage": {
3672                 "full_name": "test_prog"
3673         },
3674         "msignature": {
3675                 "arity": 0,
3676                 "mparams": [],
3677                 "return_mtype": {
3678                         "full_name": "test_prog::Bool"
3679                 },
3680                 "vararg_rank": -1
3681         }
3682 }
3683 {
3684         "name": "player_characters",
3685         "class_name": "MMethodDef",
3686         "full_name": "test_prog$Game$player_characters",
3687         "mdoc": {
3688                 "content": "Characters played by human players.",
3689                 "location": {
3690                         "column_end": 0,
3691                         "column_start": 2,
3692                         "line_end": 26,
3693                         "line_start": 25,
3694                         "file": "test_location"
3695                 }
3696         },
3697         "visibility": "public",
3698         "modifiers": ["public", "abstract", "fun"],
3699         "location": {
3700                 "column_end": 51,
3701                 "column_start": 2,
3702                 "line_end": 26,
3703                 "line_start": 25,
3704                 "file": "test_location"
3705         },
3706         "is_intro": true,
3707         "mclassdef": {
3708                 "full_name": "test_prog$Game"
3709         },
3710         "mproperty": {
3711                 "full_name": "test_prog::Game::player_characters"
3712         },
3713         "intro": {
3714                 "full_name": "test_prog$Game$player_characters"
3715         },
3716         "intro_mclassdef": {
3717                 "full_name": "test_prog$Game"
3718         },
3719         "mmodule": {
3720                 "full_name": "test_prog::game"
3721         },
3722         "mgroup": {
3723                 "full_name": "test_prog>game>"
3724         },
3725         "mpackage": {
3726                 "full_name": "test_prog"
3727         },
3728         "msignature": {
3729                 "arity": 0,
3730                 "mparams": [],
3731                 "return_mtype": {
3732                         "full_name": "test_prog::List[test_prog::Character]"
3733                 },
3734                 "vararg_rank": -1
3735         }
3736 }
3737 {
3738         "name": "computer_characters",
3739         "class_name": "MMethodDef",
3740         "full_name": "test_prog$Game$computer_characters",
3741         "mdoc": {
3742                 "content": "Characters players by computer.",
3743                 "location": {
3744                         "column_end": 0,
3745                         "column_start": 2,
3746                         "line_end": 29,
3747                         "line_start": 28,
3748                         "file": "test_location"
3749                 }
3750         },
3751         "visibility": "public",
3752         "modifiers": ["public", "abstract", "fun"],
3753         "location": {
3754                 "column_end": 53,
3755                 "column_start": 2,
3756                 "line_end": 29,
3757                 "line_start": 28,
3758                 "file": "test_location"
3759         },
3760         "is_intro": true,
3761         "mclassdef": {
3762                 "full_name": "test_prog$Game"
3763         },
3764         "mproperty": {
3765                 "full_name": "test_prog::Game::computer_characters"
3766         },
3767         "intro": {
3768                 "full_name": "test_prog$Game$computer_characters"
3769         },
3770         "intro_mclassdef": {
3771                 "full_name": "test_prog$Game"
3772         },
3773         "mmodule": {
3774                 "full_name": "test_prog::game"
3775         },
3776         "mgroup": {
3777                 "full_name": "test_prog>game>"
3778         },
3779         "mpackage": {
3780                 "full_name": "test_prog"
3781         },
3782         "msignature": {
3783                 "arity": 0,
3784                 "mparams": [],
3785                 "return_mtype": {
3786                         "full_name": "test_prog::List[test_prog::Character]"
3787                 },
3788                 "vararg_rank": -1
3789         }
3790 }
3791 {
3792         "name": "start_game",
3793         "class_name": "MMethodDef",
3794         "full_name": "test_prog$Game$start_game",
3795         "mdoc": {
3796                 "content": "Start the game.\n\nYou have to implement that method!",
3797                 "location": {
3798                         "column_end": 0,
3799                         "column_start": 2,
3800                         "line_end": 34,
3801                         "line_start": 31,
3802                         "file": "test_location"
3803                 }
3804         },
3805         "visibility": "public",
3806         "modifiers": ["public", "abstract", "fun"],
3807         "location": {
3808                 "column_end": 27,
3809                 "column_start": 2,
3810                 "line_end": 34,
3811                 "line_start": 31,
3812                 "file": "test_location"
3813         },
3814         "is_intro": true,
3815         "mclassdef": {
3816                 "full_name": "test_prog$Game"
3817         },
3818         "mproperty": {
3819                 "full_name": "test_prog::Game::start_game"
3820         },
3821         "intro": {
3822                 "full_name": "test_prog$Game$start_game"
3823         },
3824         "intro_mclassdef": {
3825                 "full_name": "test_prog$Game"
3826         },
3827         "mmodule": {
3828                 "full_name": "test_prog::game"
3829         },
3830         "mgroup": {
3831                 "full_name": "test_prog>game>"
3832         },
3833         "mpackage": {
3834                 "full_name": "test_prog"
3835         },
3836         "msignature": {
3837                 "arity": 0,
3838                 "mparams": [],
3839                 "return_mtype": null,
3840                 "vararg_rank": -1
3841         }
3842 }
3843 {
3844         "name": "pause_game",
3845         "class_name": "MMethodDef",
3846         "full_name": "test_prog$Game$pause_game",
3847         "mdoc": {
3848                 "content": "Pause the game.\n\nYou have to implement that method!",
3849                 "location": {
3850                         "column_end": 0,
3851                         "column_start": 2,
3852                         "line_end": 39,
3853                         "line_start": 36,
3854                         "file": "test_location"
3855                 }
3856         },
3857         "visibility": "public",
3858         "modifiers": ["public", "abstract", "fun"],
3859         "location": {
3860                 "column_end": 27,
3861                 "column_start": 2,
3862                 "line_end": 39,
3863                 "line_start": 36,
3864                 "file": "test_location"
3865         },
3866         "is_intro": true,
3867         "mclassdef": {
3868                 "full_name": "test_prog$Game"
3869         },
3870         "mproperty": {
3871                 "full_name": "test_prog::Game::pause_game"
3872         },
3873         "intro": {
3874                 "full_name": "test_prog$Game$pause_game"
3875         },
3876         "intro_mclassdef": {
3877                 "full_name": "test_prog$Game"
3878         },
3879         "mmodule": {
3880                 "full_name": "test_prog::game"
3881         },
3882         "mgroup": {
3883                 "full_name": "test_prog>game>"
3884         },
3885         "mpackage": {
3886                 "full_name": "test_prog"
3887         },
3888         "msignature": {
3889                 "arity": 0,
3890                 "mparams": [],
3891                 "return_mtype": null,
3892                 "vararg_rank": -1
3893         }
3894 }
3895 {
3896         "name": "stop_game",
3897         "class_name": "MMethodDef",
3898         "full_name": "test_prog$Game$stop_game",
3899         "mdoc": {
3900                 "content": "Stop the game.\n\nYou have to implement that method!",
3901                 "location": {
3902                         "column_end": 0,
3903                         "column_start": 2,
3904                         "line_end": 44,
3905                         "line_start": 41,
3906                         "file": "test_location"
3907                 }
3908         },
3909         "visibility": "public",
3910         "modifiers": ["public", "abstract", "fun"],
3911         "location": {
3912                 "column_end": 26,
3913                 "column_start": 2,
3914                 "line_end": 44,
3915                 "line_start": 41,
3916                 "file": "test_location"
3917         },
3918         "is_intro": true,
3919         "mclassdef": {
3920                 "full_name": "test_prog$Game"
3921         },
3922         "mproperty": {
3923                 "full_name": "test_prog::Game::stop_game"
3924         },
3925         "intro": {
3926                 "full_name": "test_prog$Game$stop_game"
3927         },
3928         "intro_mclassdef": {
3929                 "full_name": "test_prog$Game"
3930         },
3931         "mmodule": {
3932                 "full_name": "test_prog::game"
3933         },
3934         "mgroup": {
3935                 "full_name": "test_prog>game>"
3936         },
3937         "mpackage": {
3938                 "full_name": "test_prog"
3939         },
3940         "msignature": {
3941                 "arity": 0,
3942                 "mparams": [],
3943                 "return_mtype": null,
3944                 "vararg_rank": -1
3945         }
3946 }
3947 {
3948         "name": "start",
3949         "class_name": "MMethodDef",
3950         "full_name": "test_prog$Starter$start",
3951         "mdoc": null,
3952         "visibility": "public",
3953         "modifiers": ["public", "fun"],
3954         "location": {
3955                 "column_end": 17,
3956                 "column_start": 2,
3957                 "line_end": 22,
3958                 "line_start": 22,
3959                 "file": "test_location"
3960         },
3961         "is_intro": true,
3962         "mclassdef": {
3963                 "full_name": "test_prog$Starter"
3964         },
3965         "mproperty": {
3966                 "full_name": "test_prog::Starter::start"
3967         },
3968         "intro": {
3969                 "full_name": "test_prog$Starter$start"
3970         },
3971         "intro_mclassdef": {
3972                 "full_name": "test_prog$Starter"
3973         },
3974         "mmodule": {
3975                 "full_name": "test_prog::test_prog"
3976         },
3977         "mgroup": {
3978                 "full_name": "test_prog>"
3979         },
3980         "mpackage": {
3981                 "full_name": "test_prog"
3982         },
3983         "msignature": {
3984                 "arity": 0,
3985                 "mparams": [],
3986                 "return_mtype": null,
3987                 "vararg_rank": -1
3988         }
3989 }
3990 {
3991         "name": "main",
3992         "class_name": "MMethodDef",
3993         "full_name": "test_prog$Sys$main",
3994         "mdoc": null,
3995         "visibility": "public",
3996         "modifiers": ["public", "fun"],
3997         "location": {
3998                 "column_end": 13,
3999                 "column_start": 1,
4000                 "line_end": 26,
4001                 "line_start": 25,
4002                 "file": "test_location"
4003         },
4004         "is_intro": true,
4005         "mclassdef": {
4006                 "full_name": "test_prog$Sys"
4007         },
4008         "mproperty": {
4009                 "full_name": "test_prog::Sys::main"
4010         },
4011         "intro": {
4012                 "full_name": "test_prog$Sys$main"
4013         },
4014         "intro_mclassdef": {
4015                 "full_name": "test_prog$Sys"
4016         },
4017         "mmodule": {
4018                 "full_name": "test_prog::test_prog"
4019         },
4020         "mgroup": {
4021                 "full_name": "test_prog>"
4022         },
4023         "mpackage": {
4024                 "full_name": "test_prog"
4025         },
4026         "msignature": {
4027                 "arity": 0,
4028                 "mparams": [],
4029                 "return_mtype": null,
4030                 "vararg_rank": -1
4031         }
4032 }