fn1	input.v	/^fn fn1() {$/;"	f	line:1	typeref:typename:	signature:()	roles:def	end:2
fn2	input.v	/^fn fn2(a int) {$/;"	f	line:4	typeref:typename:	signature:(a int)	roles:def	end:5
fn3	input.v	/^fn fn3(a int, b string, c Foo) os.Signal {$/;"	f	line:7	typeref:typename:os.Signal	signature:(a int, b string, c Foo)	roles:def	end:8
fn4	input.v	/^fn fn4() ! {$/;"	f	line:10	typeref:typename:!	signature:()	roles:def	end:11
fn5	input.v	/^fn fn5() ?Test {$/;"	f	line:13	typeref:typename:?Test	signature:()	roles:def	end:14
fn6	input.v	/^fn fn6() (int, int) {$/;"	f	line:16	typeref:typename:(int, int)	signature:()	roles:def	end:23
fn7	input.v	/^    fn fn7() {$/;"	f	line:18	fn:fn6	typeref:typename:	signature:()	roles:def	end:22
fn8	input.v	/^        fn fn8(a int, b string, c Foo) (!Test, int, Foo) {$/;"	f	line:20	fn:fn6.fn7	typeref:typename:(!Test, int, Foo)	signature:(a int, b string, c Foo)	roles:def	end:21
fnR1	input.v	/^fn (s Foo) fnR1(a int) {$/;"	f	line:27	typeref:typename:	signature:(s Foo)(a int)	roles:def	end:28
s	input.v	/^fn (s Foo) fnR1(a int) {$/;"	R	line:27	fn:fnR1	roles:def
fnR2	input.v	/^fn (s *Foo) fnR2(a int, b string, c Foo) ?Foo {$/;"	f	line:30	typeref:typename:?Foo	signature:(s *Foo)(a int, b string, c Foo)	roles:def	end:31
s	input.v	/^fn (s *Foo) fnR2(a int, b string, c Foo) ?Foo {$/;"	R	line:30	fn:fnR2	roles:def
main	input.v	/^fn main () {$/;"	f	line:33	typeref:typename:	signature:()	roles:def	end:48
x	input.v	/^    x := fn(a int, b int) int { return a + b }$/;"	v	line:36	fn:main	roles:def
y	input.v	/^    y := x(0, 0)$/;"	v	line:37	fn:main	roles:def
z	input.v	/^    z := fn() {$/;"	v	line:38	fn:main	roles:def
a	input.v	/^        a := 0$/;"	v	line:41	roles:def
b	input.v	/^        b := 0$/;"	v	line:42	roles:def
add	input.v	/^        add :=$/;"	v	line:43	roles:def
xyz	input-1.v	/^module xyz$/;"	p	line:1	roles:def
yesnow	input-1.v	/^fn (mut s Foo) yesnow() ! {$/;"	f	line:3	module:xyz	typeref:typename:!	signature:(mut s Foo)()	roles:def	end:4
s	input-1.v	/^fn (mut s Foo) yesnow() ! {$/;"	R	line:3	fn:xyz.yesnow	roles:def
new_repo	input-2.v	/^fn new_repo[T](db DB) Repo[T] {$/;"	f	line:3	typeref:typename:Repo[T]	signature:[T](db DB)	roles:def	end:5
find_by_id	input-2.v	/^pub fn (r Repo[T]) find_by_id(id int) ?T {$/;"	f	line:7	typeref:typename:?T	access:pub	signature:(r Repo[T])(id int)	roles:def	end:10
r	input-2.v	/^pub fn (r Repo[T]) find_by_id(id int) ?T {$/;"	R	line:7	fn:find_by_id	roles:def
table_name	input-2.v	/^    table_name := T.name \/\/ in this example getting the name of the type gives us the table na/;"	v	line:8	fn:find_by_id	roles:def
Bosh	input-3.v	/^enum Bosh {$/;"	g	line:3	roles:def	end:6
bim	input-3.v	/^    bim$/;"	e	line:4	enum:Bosh	roles:def
bam	input-3.v	/^    bam$/;"	e	line:5	enum:Bosh	roles:def
from_string	input-3.v	/^fn Bosh.from_string(s string) !Bosh {$/;"	f	line:8	enum:Bosh	typeref:typename:!Bosh	signature:(s string)	roles:def	end:9
nope	input-3.v	/^fn Bogus.nope() {$/;"	f	line:11	typeref:typename:	signature:()	roles:def	end:12
xyz	input-4.v	/^module xyz$/;"	p	line:1	roles:def
Bosh	input-4.v	/^enum Bosh {$/;"	g	line:5	module:xyz	roles:def	end:8
bim	input-4.v	/^    bim$/;"	e	line:6	enum:xyz.Bosh	roles:def
bam	input-4.v	/^    bam$/;"	e	line:7	enum:xyz.Bosh	roles:def
from_string	input-4.v	/^fn Bosh.from_string(s string) !Bosh {$/;"	f	line:10	enum:xyz.Bosh	typeref:typename:!Bosh	signature:(s string)	roles:def	end:11
nope	input-4.v	/^fn Bogus.nope() {$/;"	f	line:13	typeref:typename:	signature:()	roles:def	end:14
main	input-5.v	/^fn main() {$/;"	f	line:1	typeref:typename:	signature:()	roles:def	end:4
a	input-5.v	/^    a := foo().bar()$/;"	v	line:2	fn:main	roles:def
b	input-5.v	/^    b := Foo.bar().foo.bar()$/;"	v	line:3	fn:main	roles:def
a	input-6.v	/^pub fn a() Test$/;"	f	line:1	typeref:typename:Test	access:pub	signature:()	roles:def
b	input-6.v	/^pub fn b() !Test$/;"	f	line:2	typeref:typename:!Test	access:pub	signature:()	roles:def
c	input-6.v	/^pub fn c() []Test$/;"	f	line:3	typeref:typename:[]Test	access:pub	signature:()	roles:def
d	input-6.v	/^pub fn d() [][]Test$/;"	f	line:4	typeref:typename:[][]Test	access:pub	signature:()	roles:def
e	input-6.v	/^pub fn e() a.b.C$/;"	f	line:5	typeref:typename:a.b.C	access:pub	signature:()	roles:def
f	input-6.v	/^pub fn f() [][][]a.b.C$/;"	f	line:6	typeref:typename:[][][]a.b.C	access:pub	signature:()	roles:def
