-------- @callgraph callgraph-main --------

Below is a call graph of package main.
The numbered nodes form a spanning tree.
Non-numbered nodes indicate back- or cross-edges to the node whose
 number follows in parentheses.

0	init
1	main
2	    call
3	        A
4	        B
5	    call2
6	        main$1
	    main (1)
7	    nop

-------- @callgraph callgraph-complete --------

Below is a call graph of the entire program.
The numbered nodes form a spanning tree.
Non-numbered nodes indicate back- or cross-edges to the node whose
 number follows in parentheses.

0	<root>
1	    main.init
2	        lib.init
3	    main.main
4	        lib.Func
5	        main.call
6	            main.A
7	            main.B
8	        main.call2
9	            main.main$1
	        main.main (3)
10	        main.nop

