neo_doxygen: Add some integration tests.
authorJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Tue, 25 Nov 2014 18:19:55 +0000 (13:19 -0500)
committerJean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>
Tue, 25 Nov 2014 18:19:55 +0000 (13:19 -0500)
Signed-off-by: Jean-Christophe Beaupré <jcbrinfo@users.noreply.github.com>

contrib/neo_doxygen/src/neo_doxygen.nit
contrib/neo_doxygen/src/tests/neo_doxygen_dump.nit [new file with mode: 0644]
tests/neo_doxygen_dump.args [new file with mode: 0644]
tests/sav/neo_doxygen_dump.res [new file with mode: 0644]
tests/sav/neo_doxygen_dump_args1.res [new file with mode: 0644]
tests/sav/neo_doxygen_dump_args2.res [new file with mode: 0644]
tests/sav/neo_doxygen_dump_args3.res [new file with mode: 0644]
tests/sav/neo_doxygen_dump_args4.res [new file with mode: 0644]
tests/sav/neo_doxygen_dump_args5.res [new file with mode: 0644]

index 161eddc..d70f008 100644 (file)
@@ -62,7 +62,7 @@ class NeoDoxygenJob
                end
                flush_stdout
                loop
-                       for f in dir.files do
+                       for f in list_files(dir) do
                                var path = dir/f
                                if path.file_stat.is_dir then
                                        directories.push(path)
@@ -83,6 +83,14 @@ class NeoDoxygenJob
                flush_stdout
        end
 
+       # List files in a directory.
+       #
+       # This method may be redefined to force the order in which the files
+       # are read by `load_project`.
+       protected fun list_files(dir: String): Collection[String] do
+               return dir.files
+       end
+
        # Check the project’s name.
        private fun check_name(name: String) do
                assert name_valid: not name.chars.first.is_upper else
diff --git a/contrib/neo_doxygen/src/tests/neo_doxygen_dump.nit b/contrib/neo_doxygen/src/tests/neo_doxygen_dump.nit
new file mode 100644 (file)
index 0000000..326a030
--- /dev/null
@@ -0,0 +1,55 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A variant of the `neo_doxygen` program that produces a debugging output of the graph instead of saving it.
+#
+# Note: The `--dest` option is ignored.
+module tests::neo_doxygen_dump
+
+import tests
+import neo_doxygen
+
+redef class Sys
+       redef fun program_name do return "%PROGRAM_NAME%"
+end
+
+redef class NeoDoxygenJob
+       redef fun list_files(dir) do
+               var a = super.to_a
+               default_comparator.sort(a)
+               return a
+       end
+end
+
+redef class NeoDoxygenCommand
+       redef fun create_store(url) do return new DebugStore
+end
+
+class DebugStore
+       super GraphStore
+
+       redef fun has_node_label(name) do return false
+
+       redef fun save_all(neo_entities) do
+               print ""
+               for n in neo_entities do
+                       if n isa NeoEdge then
+                               var buffer = new RopeBuffer
+                               n.debug buffer
+                               print buffer
+                       end
+               end
+               print "---===DONE===---"
+       end
+end
diff --git a/tests/neo_doxygen_dump.args b/tests/neo_doxygen_dump.args
new file mode 100644 (file)
index 0000000..3a355ab
--- /dev/null
@@ -0,0 +1,5 @@
+'empty project with default settings' ../contrib/neo_doxygen/tests/empty-project/xml
+--src-lang any -- empty-project ../contrib/neo_doxygen/tests/empty-project/xml
+--src-lang java empty-project ../contrib/neo_doxygen/tests/empty-project/xml
+--src-lang any -- foo ../contrib/neo_doxygen/tests/java-project/xml
+--src-lang java -- foo ../contrib/neo_doxygen/tests/java-project/xml
diff --git a/tests/sav/neo_doxygen_dump.res b/tests/sav/neo_doxygen_dump.res
new file mode 100644 (file)
index 0000000..e043e01
--- /dev/null
@@ -0,0 +1,31 @@
+\e[1mNAME\e[m
+  %PROGRAM_NAME% — Doxygen XML to Neo4j.
+
+\e[1mSYNOPSIS\e[m
+  %PROGRAM_NAME% [--dest <url>] [--src-lang <lang>]
+    [--] <project_name> <doxml_dir>
+  %PROGRAM_NAME% [-h|--help]
+
+\e[1mDESCRIPTION\e[m
+  Convert a Doxygen XML output into a model in Neo4j that is readable by the
+  `nx` tool.
+
+\e[1mARGUMENTS\e[m
+  <project_name>  The internal name of the project. Must the same name as the
+                  one specified to the `nx` tool. Must not begin by an upper
+                  case letter.
+
+  <doxml_dir>     The directory where the XML documents generated by Doxygen are
+                  located.
+
+\e[1mOPTIONS\e[m
+
+  --dest       The URL of the destination graph. `http://localhost:7474` by
+               default.
+
+  -h, --help   Show the help (this page).
+
+  --src-lang   The programming language to assume when processing chunk in the
+               declarations left as-is by Doxygen. Use `any` (the default) to
+               disable any language-specific processing. <any, java>
+
diff --git a/tests/sav/neo_doxygen_dump_args1.res b/tests/sav/neo_doxygen_dump_args1.res
new file mode 100644 (file)
index 0000000..743b9a2
--- /dev/null
@@ -0,0 +1,51 @@
+Reading ../contrib/neo_doxygen/tests/empty-project/xml... Done.
+0 file read.
+Linking nodes...\e[s \e[u\e[J Done.
+Saving 2 nodes...
+---===DONE===---
+Saving 2 edges...
+Edge
+=type=4:ROOT
+=properties=JsonObject(0):
+{}
+----
+=from=Node
+=labels=Array(3):
+35:empty project with default settings
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"empty project with default settings"}
+----
+=to=Entity#0:
+=labels=Array(3):
+35:empty project with default settings
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"empty project with default settings"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+35:empty project with default settings
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"empty project with default settings"}
+----
+=to=Node
+=labels=Array(3):
+35:empty project with default settings
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"empty project with default settings"}
+
+
+---===DONE===---
diff --git a/tests/sav/neo_doxygen_dump_args2.res b/tests/sav/neo_doxygen_dump_args2.res
new file mode 100644 (file)
index 0000000..724e242
--- /dev/null
@@ -0,0 +1,51 @@
+Reading ../contrib/neo_doxygen/tests/empty-project/xml... Done.
+0 file read.
+Linking nodes...\e[s \e[u\e[J Done.
+Saving 2 nodes...
+---===DONE===---
+Saving 2 edges...
+Edge
+=type=4:ROOT
+=properties=JsonObject(0):
+{}
+----
+=from=Node
+=labels=Array(3):
+13:empty-project
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"empty-project"}
+----
+=to=Entity#0:
+=labels=Array(3):
+13:empty-project
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"empty-project"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+13:empty-project
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"empty-project"}
+----
+=to=Node
+=labels=Array(3):
+13:empty-project
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"empty-project"}
+
+
+---===DONE===---
diff --git a/tests/sav/neo_doxygen_dump_args3.res b/tests/sav/neo_doxygen_dump_args3.res
new file mode 100644 (file)
index 0000000..724e242
--- /dev/null
@@ -0,0 +1,51 @@
+Reading ../contrib/neo_doxygen/tests/empty-project/xml... Done.
+0 file read.
+Linking nodes...\e[s \e[u\e[J Done.
+Saving 2 nodes...
+---===DONE===---
+Saving 2 edges...
+Edge
+=type=4:ROOT
+=properties=JsonObject(0):
+{}
+----
+=from=Node
+=labels=Array(3):
+13:empty-project
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"empty-project"}
+----
+=to=Entity#0:
+=labels=Array(3):
+13:empty-project
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"empty-project"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+13:empty-project
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"empty-project"}
+----
+=to=Node
+=labels=Array(3):
+13:empty-project
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"empty-project"}
+
+
+---===DONE===---
diff --git a/tests/sav/neo_doxygen_dump_args4.res b/tests/sav/neo_doxygen_dump_args4.res
new file mode 100644 (file)
index 0000000..6ceb76f
--- /dev/null
@@ -0,0 +1,1951 @@
+Reading ../contrib/neo_doxygen/tests/java-project/xml... Done.
+15 files read.
+Linking nodes...\e[s \e[u\e[J Done.
+Saving 58 nodes...
+---===DONE===---
+Saving 85 edges...
+Edge
+=type=4:ROOT
+=properties=JsonObject(0):
+{}
+----
+=from=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:1,1--1,1","full_name":"org::example::foo::A","name":"A"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:1,1--1,1","full_name":"org::example::foo::A","name":"A"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:1,1--1,1","full_name":"org::example::foo::A","name":"A"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:1,1--1,1","full_name":"org::example::foo::B","name":"B"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:1,1--1,1","full_name":"org::example::foo::B","name":"B"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:1,1--1,1","full_name":"org::example::foo::B","name":"B"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:1,1--1,1","full_name":"org::example::foo::C","name":"C"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:1,1--1,1","full_name":"org::example::foo::C","name":"C"}
+----
+=to=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:1,1--1,1","full_name":"org::example::foo::C","name":"C"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:1,1--1,1","full_name":"org::example::foo::EmptyClass","name":"EmptyClass"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:1,1--1,1","full_name":"org::example::foo::EmptyClass","name":"EmptyClass"}
+----
+=to=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:1,1--1,1","full_name":"org::example::foo::EmptyClass","name":"EmptyClass"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","is_intro":true,"name":"EmptyClass","full_name":"org::example::foo::EmptyClass","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:22,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","mdoc":["Does something..."],"is_intro":true,"full_name":"org::example::foo::A::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::A::bar"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:22,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","mdoc":["Does something..."],"is_intro":true,"full_name":"org::example::foo::A::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["abstract boolean"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::A::bar"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::A::bar"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:22,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","mdoc":["Does something..."],"is_intro":true,"full_name":"org::example::foo::A::bar"}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:19,1---1,1","visibility":"protected","name":"qux","is_intro":true,"full_name":"org::example::foo::B::qux"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"protected","name":"qux","full_name":"org::example::foo::B::qux"}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:19,1---1,1","visibility":"protected","name":"qux","is_intro":true,"full_name":"org::example::foo::B::qux"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["String"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(8):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:21,1--23,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","is_intro":true,"full_name":"org::example::foo::B::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::B::bar"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(8):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:21,1--23,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","is_intro":true,"full_name":"org::example::foo::B::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["boolean"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:28,1--28,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["Some overriden documentation."],"is_intro":false,"full_name":"org::example::foo::B::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:28,1--28,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["Some overriden documentation."],"is_intro":false,"full_name":"org::example::foo::B::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["void"]}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+
+
+Edge
+=type=8:INHERITS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=8:INHERITS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"protected","name":"qux","full_name":"org::example::foo::B::qux"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"protected","name":"qux","full_name":"org::example::foo::B::qux"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:19,1---1,1","visibility":"protected","name":"qux","is_intro":true,"full_name":"org::example::foo::B::qux"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::B::bar"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::B::bar"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(8):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:21,1--23,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","is_intro":true,"full_name":"org::example::foo::B::bar"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:28,1--28,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["Some overriden documentation."],"is_intro":false,"full_name":"org::example::foo::B::baz"}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"EmptyClass","full_name":"org::example::foo::EmptyClass"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"EmptyClass","full_name":"org::example::foo::EmptyClass"}
+----
+=to=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","is_intro":true,"name":"EmptyClass","full_name":"org::example::foo::EmptyClass","mdoc":["This class is empty and is only visible in this package."]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"EmptyClass","full_name":"org::example::foo::EmptyClass"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","is_intro":true,"name":"EmptyClass","full_name":"org::example::foo::EmptyClass","mdoc":["This class is empty and is only visible in this package."]}
+----
+=to=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(6):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:25,1---1,1","visibility":"public","name":"THE_ANSWER","mdoc":["\u000e2\u00080\u0009cAnswer to the Ultimate Question of Life, the Universe, and Everything.\u000e2\u00080\u0009c"],"is_intro":true,"full_name":"org::example::foo::C::THE_ANSWER"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"public","name":"THE_ANSWER","full_name":"org::example::foo::C::THE_ANSWER"}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(6):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:25,1---1,1","visibility":"public","name":"THE_ANSWER","mdoc":["\u000e2\u00080\u0009cAnswer to the Ultimate Question of Life, the Universe, and Everything.\u000e2\u00080\u0009c"],"is_intro":true,"full_name":"org::example::foo::C::THE_ANSWER"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["final long"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:30,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["A function with implicit modifiers."],"is_intro":true,"full_name":"org::example::foo::C::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:30,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["A function with implicit modifiers."],"is_intro":true,"full_name":"org::example::foo::C::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["void"]}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+----
+=to=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"public","name":"THE_ANSWER","full_name":"org::example::foo::C::THE_ANSWER"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"public","name":"THE_ANSWER","full_name":"org::example::foo::C::THE_ANSWER"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(6):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:25,1---1,1","visibility":"public","name":"THE_ANSWER","mdoc":["\u000e2\u00080\u0009cAnswer to the Ultimate Question of Life, the Universe, and Everything.\u000e2\u00080\u0009c"],"is_intro":true,"full_name":"org::example::foo::C::THE_ANSWER"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:30,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["A function with implicit modifiers."],"is_intro":true,"full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+Edge
+=type=6:PARENT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+
+
+Edge
+=type=5:NESTS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+----
+=to=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=6:PARENT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=5:NESTS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+Edge
+=type=6:PARENT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=5:NESTS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+---===DONE===---
diff --git a/tests/sav/neo_doxygen_dump_args5.res b/tests/sav/neo_doxygen_dump_args5.res
new file mode 100644 (file)
index 0000000..a41654d
--- /dev/null
@@ -0,0 +1,1951 @@
+Reading ../contrib/neo_doxygen/tests/java-project/xml... Done.
+15 files read.
+Linking nodes...\e[s \e[u\e[J Done.
+Saving 58 nodes...
+---===DONE===---
+Saving 85 edges...
+Edge
+=type=4:ROOT
+=properties=JsonObject(0):
+{}
+----
+=from=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:1,1--1,1","full_name":"org::example::foo::A","name":"A"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:1,1--1,1","full_name":"org::example::foo::A","name":"A"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:1,1--1,1","full_name":"org::example::foo::A","name":"A"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:1,1--1,1","full_name":"org::example::foo::B","name":"B"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:1,1--1,1","full_name":"org::example::foo::B","name":"B"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:1,1--1,1","full_name":"org::example::foo::B","name":"B"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:1,1--1,1","full_name":"org::example::foo::C","name":"C"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:1,1--1,1","full_name":"org::example::foo::C","name":"C"}
+----
+=to=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:1,1--1,1","full_name":"org::example::foo::C","name":"C"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:1,1--1,1","full_name":"org::example::foo::EmptyClass","name":"EmptyClass"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:1,1--1,1","full_name":"org::example::foo::EmptyClass","name":"EmptyClass"}
+----
+=to=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+7:MModule
+=properties=JsonObject(3):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:1,1--1,1","full_name":"org::example::foo::EmptyClass","name":"EmptyClass"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","is_intro":true,"name":"EmptyClass","full_name":"org::example::foo::EmptyClass","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:22,1--1,1","is_intern":false,"is_extern":false,"is_abstract":true,"visibility":"public","name":"bar","mdoc":["Does something..."],"is_intro":true,"full_name":"org::example::foo::A::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::A::bar"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:22,1--1,1","is_intern":false,"is_extern":false,"is_abstract":true,"visibility":"public","name":"bar","mdoc":["Does something..."],"is_intro":true,"full_name":"org::example::foo::A::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["boolean"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_a
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"abstract class","visibility":"public","full_name":"org::example::foo::A","name":"A","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::A::bar"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::A::bar"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:18,1--23,1","is_intro":true,"name":"A","full_name":"org::example::foo::A"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_a_1add415ae4129969055d678c7e7e048852
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:22,1--1,1","is_intern":false,"is_extern":false,"is_abstract":true,"visibility":"public","name":"bar","mdoc":["Does something..."],"is_intro":true,"full_name":"org::example::foo::A::bar"}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:19,1---1,1","visibility":"protected","name":"qux","is_intro":true,"full_name":"org::example::foo::B::qux"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"protected","name":"qux","full_name":"org::example::foo::B::qux"}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:19,1---1,1","visibility":"protected","name":"qux","is_intro":true,"full_name":"org::example::foo::B::qux"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["String"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(8):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:21,1--23,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","is_intro":true,"full_name":"org::example::foo::B::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::B::bar"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(8):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:21,1--23,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","is_intro":true,"full_name":"org::example::foo::B::bar"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+
+
+Edge
+=type=9:PARAMETER
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(1):
+{"parameter_names":["x","y"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["boolean"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":0,"name":"x"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["int"]}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+10:MParameter
+=properties=JsonObject(3):
+{"is_vararg":false,"rank":1,"name":"y"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["EmptyClass"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:28,1--28,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["Some overriden documentation."],"is_intro":false,"full_name":"org::example::foo::B::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:28,1--28,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["Some overriden documentation."],"is_intro":false,"full_name":"org::example::foo::B::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["void"]}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#32:classorg_1_1example_1_1foo_1_1_b
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(5):
+{"kind":"class","visibility":"public","full_name":"org::example::foo::B","name":"B","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1"}
+
+
+Edge
+=type=8:INHERITS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"A","full_name":"org::example::foo::A"}
+
+
+Edge
+=type=8:INHERITS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"protected","name":"qux","full_name":"org::example::foo::B::qux"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"protected","name":"qux","full_name":"org::example::foo::B::qux"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_b_1ac6b627949b10b9357eefc0cafcae1d87
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:19,1---1,1","visibility":"protected","name":"qux","is_intro":true,"full_name":"org::example::foo::B::qux"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::B::bar"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"bar","full_name":"org::example::foo::B::bar"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a11e157943665cc9e3a9be1502ebeb3b5
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(8):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:21,1--23,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"bar","is_intro":true,"full_name":"org::example::foo::B::bar"}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(4):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:18,1--29,1","is_intro":true,"name":"B","full_name":"org::example::foo::B"}
+----
+=to=Entity#67:classorg_1_1example_1_1foo_1_1_b_1a733f4e076f29c7d0c41ed258199ea1d9
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/B.java:28,1--28,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["Some overriden documentation."],"is_intro":false,"full_name":"org::example::foo::B::baz"}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"EmptyClass","full_name":"org::example::foo::EmptyClass"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"EmptyClass","full_name":"org::example::foo::EmptyClass"}
+----
+=to=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","is_intro":true,"name":"EmptyClass","full_name":"org::example::foo::EmptyClass","mdoc":["This class is empty and is only visible in this package."]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"EmptyClass","full_name":"org::example::foo::EmptyClass"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","is_intro":true,"name":"EmptyClass","full_name":"org::example::foo::EmptyClass","mdoc":["This class is empty and is only visible in this package."]}
+----
+=to=Entity#42:classorg_1_1example_1_1foo_1_1_empty_class
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"class","visibility":"package","full_name":"org::example::foo::EmptyClass","name":"EmptyClass","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/EmptyClass.java:21,1--21,1","mdoc":["This class is empty and is only visible in this package."]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(6):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:25,1---1,1","visibility":"public","name":"THE_ANSWER","mdoc":["\u000e2\u00080\u0009cAnswer to the Ultimate Question of Life, the Universe, and Everything.\u000e2\u00080\u0009c"],"is_intro":true,"full_name":"org::example::foo::C::THE_ANSWER"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"public","name":"THE_ANSWER","full_name":"org::example::foo::C::THE_ANSWER"}
+
+
+Edge
+=type=4:TYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(6):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:25,1---1,1","visibility":"public","name":"THE_ANSWER","mdoc":["\u000e2\u00080\u0009cAnswer to the Ultimate Question of Life, the Universe, and Everything.\u000e2\u00080\u0009c"],"is_intro":true,"full_name":"org::example::foo::C::THE_ANSWER"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["final long"]}
+
+
+Edge
+=type=7:DEFINES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:30,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["A function with implicit modifiers."],"is_intro":true,"full_name":"org::example::foo::C::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=9:SIGNATURE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:30,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["A function with implicit modifiers."],"is_intro":true,"full_name":"org::example::foo::C::baz"}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+
+
+Edge
+=type=10:RETURNTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MSignature
+=properties=JsonObject(0):
+{}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+8:MRawType
+=properties=JsonObject(1):
+{"text":["void"]}
+
+
+Edge
+=type=9:CLASSTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+
+
+Edge
+=type=5:CLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+----
+=to=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+
+
+Edge
+=type=9:BOUNDTYPE
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+5:MType
+10:MClassType
+=properties=JsonObject(2):
+{"name":"C","full_name":"org::example::foo::C"}
+
+
+Edge
+=type=6:MCLASS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#36:interfaceorg_1_1example_1_1foo_1_1_c
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MClass
+=properties=JsonObject(6):
+{"kind":"interface","visibility":"public","full_name":"org::example::foo::C","name":"C","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","mdoc":["An interface"]}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"public","name":"THE_ANSWER","full_name":"org::example::foo::C::THE_ANSWER"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+10:MAttribute
+=properties=JsonObject(3):
+{"visibility":"public","name":"THE_ANSWER","full_name":"org::example::foo::C::THE_ANSWER"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a4e97061eb40b045e820de05b33c43d21
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+13:MAttributeDef
+=properties=JsonObject(6):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:25,1---1,1","visibility":"public","name":"THE_ANSWER","mdoc":["\u000e2\u00080\u0009cAnswer to the Ultimate Question of Life, the Universe, and Everything.\u000e2\u00080\u0009c"],"is_intro":true,"full_name":"org::example::foo::C::THE_ANSWER"}
+
+
+Edge
+=type=10:INTRODUCES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=14:INTRO_CLASSDEF
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(4):
+3:foo
+7:MEntity
+9:MProperty
+7:MMethod
+=properties=JsonObject(4):
+{"visibility":"public","is_init":false,"name":"baz","full_name":"org::example::foo::C::baz"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+
+
+Edge
+=type=8:DECLARES
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+9:MClassDef
+=properties=JsonObject(5):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:21,1--31,1","is_intro":true,"name":"C","full_name":"org::example::foo::C","mdoc":["An interface"]}
+----
+=to=Entity#71:interfaceorg_1_1example_1_1foo_1_1_c_1a28ac7ce349ebb3e4a7747a8dd951582b
+=labels=Array(4):
+3:foo
+7:MEntity
+8:MPropDef
+10:MMethodDef
+=properties=JsonObject(9):
+{"location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/C.java:30,1--1,1","is_intern":false,"is_extern":false,"is_abstract":false,"visibility":"public","name":"baz","mdoc":["A function with implicit modifiers."],"is_intro":true,"full_name":"org::example::foo::C::baz"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+Edge
+=type=6:PARENT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+
+
+Edge
+=type=5:NESTS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#0:
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(2):
+{"full_name":"","name":"foo"}
+----
+=to=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=6:PARENT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=5:NESTS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#12:namespaceorg
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org","name":"org","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+Edge
+=type=6:PARENT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+
+
+Edge
+=type=5:NESTS
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#23:namespaceorg_1_1example
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example","name":"example","location":"\/dev\/null:1,1--1,1"}
+----
+=to=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+
+
+Edge
+=type=7:PROJECT
+=properties=JsonObject(0):
+{}
+----
+=from=Entity#30:namespaceorg_1_1example_1_1foo
+=labels=Array(3):
+3:foo
+7:MEntity
+6:MGroup
+=properties=JsonObject(5):
+{"kind":"namespace","visibility":"","full_name":"org::example::foo","name":"foo","location":"%SOURCE_DIRECTORY%\/org\/example\/foo\/A.java:16,1--1,1"}
+----
+=to=Node
+=labels=Array(3):
+3:foo
+7:MEntity
+8:MProject
+=properties=JsonObject(1):
+{"name":"foo"}
+
+
+---===DONE===---