diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt
index 97530c9f44..e33b242872 100644
--- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt
+++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt
@@ -30,11 +30,20 @@ import de.fraunhofer.aisec.cpg.sarif.Region
import java.net.URI
import org.neo4j.ogm.typeconversion.CompositeAttributeConverter
+interface CpgCompositeConverter : CompositeAttributeConverter {
+ /**
+ * Determines to which properties and their types the received value will be split in the neo4j
+ * representation. The type is the first element in the pair and the property name is the second
+ * one.
+ */
+ val graphSchema: List>
+}
+
/**
- * This class converts a [PhysicalLocation] into the the necessary composite attributes when
- * persisting a node into a Neo4J graph database.
+ * This class converts a [PhysicalLocation] into the necessary composite attributes when persisting
+ * a node into a Neo4J graph database.
*/
-class LocationConverter : CompositeAttributeConverter {
+class LocationConverter : CpgCompositeConverter {
override fun toGraphProperties(value: PhysicalLocation?): Map {
val properties: MutableMap = HashMap()
if (value != null) {
@@ -47,6 +56,16 @@ class LocationConverter : CompositeAttributeConverter {
return properties
}
+ override val graphSchema: List>
+ get() =
+ listOf(
+ Pair("String", ARTIFACT),
+ Pair("int", START_LINE),
+ Pair("int", END_LINE),
+ Pair("int", START_COLUMN),
+ Pair("int", END_COLUMN)
+ )
+
override fun toEntityAttribute(value: Map?): PhysicalLocation? {
return try {
val startLine = toInt(value?.get(START_LINE)) ?: return null
diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt
index 3c7b16e607..464fd04340 100644
--- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt
+++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt
@@ -27,7 +27,6 @@ package de.fraunhofer.aisec.cpg.helpers.neo4j
import de.fraunhofer.aisec.cpg.graph.Name
import de.fraunhofer.aisec.cpg.graph.parseName
-import org.neo4j.ogm.typeconversion.CompositeAttributeConverter
/**
* This converter can be used in a Neo4J session to persist the [Name] class into its components:
@@ -37,7 +36,7 @@ import org.neo4j.ogm.typeconversion.CompositeAttributeConverter
*
* Additionally, it converts the aforementioned Neo4J attributes in a node back into a [Name].
*/
-class NameConverter : CompositeAttributeConverter {
+class NameConverter : CpgCompositeConverter {
companion object {
const val FIELD_FULL_NAME = "fullName"
@@ -61,14 +60,22 @@ class NameConverter : CompositeAttributeConverter {
// For reasons such as backwards compatibility and the fact that Neo4J likes to display
// nodes in the UI with a "name" field as default, we also persist the full name (aka
- // the
- // toString() representation) as "name"
+ // the toString() representation) as "name"
map[FIELD_NAME] = value.toString()
}
return map
}
+ override val graphSchema: List>
+ get() =
+ listOf(
+ Pair("String", FIELD_FULL_NAME),
+ Pair("String", FIELD_LOCAL_NAME),
+ Pair("String", FIELD_NAME),
+ Pair("String", FIELD_NAME_DELIMITER)
+ )
+
override fun toEntityAttribute(value: MutableMap): Name {
return parseName(value[FIELD_FULL_NAME].toString(), value[FIELD_NAME_DELIMITER].toString())
}
diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt
index dfeefaaf28..03fbcb5da9 100644
--- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt
+++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt
@@ -218,6 +218,18 @@ class Application : Callable {
)
private var inferNodes: Boolean = false
+ @CommandLine.Option(
+ names = ["--schema-markdown"],
+ description = ["Print the CPGs nodes and edges that they can have."]
+ )
+ private var schemaMarkdown: Boolean = false
+
+ @CommandLine.Option(
+ names = ["--schema-json"],
+ description = ["Print the CPGs nodes and edges that they can have."]
+ )
+ private var schemaJson: Boolean = false
+
@CommandLine.Option(
names = ["--top-level"],
description =
@@ -534,6 +546,12 @@ class Application : Callable {
return translationConfiguration.build()
}
+ public fun printSchema(filenames: Collection, format: Schema.Format) {
+ val schema = Schema()
+ schema.extractSchema()
+ filenames.forEach { schema.printToFile(it, format) }
+ }
+
/**
* The entrypoint of the cpg-vis-neo4j.
*
@@ -546,6 +564,17 @@ class Application : Callable {
*/
@Throws(Exception::class, ConnectException::class, IllegalArgumentException::class)
override fun call(): Int {
+
+ if (schemaMarkdown || schemaJson) {
+ if (schemaMarkdown) {
+ printSchema(mutuallyExclusiveParameters.files, Schema.Format.MARKDOWN)
+ }
+ if (schemaJson) {
+ printSchema(mutuallyExclusiveParameters.files, Schema.Format.JSON)
+ }
+ return EXIT_SUCCESS
+ }
+
if (mutuallyExclusiveParameters.listPasses) {
log.info("List of passes:")
passList.iterator().forEach { log.info("- $it") }
diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt
new file mode 100644
index 0000000000..5d3c791811
--- /dev/null
+++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt
@@ -0,0 +1,611 @@
+/*
+ * Copyright (c) 2023, Fraunhofer AISEC. All rights reserved.
+ *
+ * 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.
+ *
+ * $$$$$$\ $$$$$$$\ $$$$$$\
+ * $$ __$$\ $$ __$$\ $$ __$$\
+ * $$ / \__|$$ | $$ |$$ / \__|
+ * $$ | $$$$$$$ |$$ |$$$$\
+ * $$ | $$ ____/ $$ |\_$$ |
+ * $$ | $$\ $$ | $$ | $$ |
+ * \$$$$$ |$$ | \$$$$$ |
+ * \______/ \__| \______/
+ *
+ */
+package de.fraunhofer.aisec.cpg_vis_neo4j
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import de.fraunhofer.aisec.cpg.graph.Node
+import de.fraunhofer.aisec.cpg.helpers.neo4j.CpgCompositeConverter
+import java.io.File
+import java.io.PrintWriter
+import java.lang.reflect.ParameterizedType
+import java.lang.reflect.Type
+import java.util.*
+import org.neo4j.ogm.metadata.ClassInfo
+import org.neo4j.ogm.metadata.FieldInfo
+import org.neo4j.ogm.metadata.MetaData
+
+class Schema {
+
+ /** Schema definition for node entities that is persisted to the neo4j database */
+ data class SchemaNode(
+ val name: String,
+ val labels: Set,
+ val childLabels: Set,
+ val relationships: Set,
+ val properties: Set
+ )
+
+ /**
+ * Definition of a CPG relationship with relationship label, the targeted node and whether the
+ * node has multiple or a single relationship edge of the declared type.
+ */
+ data class SchemaRelationship(
+ val label: String,
+ val targetNode: String,
+ val multiplicity: Char
+ )
+
+ /**
+ * Key-value pair defining a node property and if the property was inherited from a parent node
+ * entity type or newly introduced in this node entity.
+ */
+ data class SchemaProperty(
+ val name: String,
+ val valueType: String,
+ val inherited: Boolean,
+ )
+
+ /** Output format of the CPG Schema description. */
+ enum class Format {
+ MARKDOWN,
+ JSON
+ }
+
+ private val styling =
+ "\n"
+
+ private val header =
+ styling +
+ "\n" +
+ "# CPG Schema\n" +
+ "This file shows all node labels and relationships between them that are persisted from the in memory CPG to the Neo4j database. " +
+ "The specification is generated automatically and always up to date."
+
+ // Contains the class hierarchy with the root Node.
+ private val hierarchy: MutableMap>> = mutableMapOf()
+
+ /**
+ * Map of entities and the relationships they can have, including relationships defined in
+ * subclasses. The pair saves the field name, and the relationship name. Saves
+ * MutableMap>>
+ */
+ private val allRels: MutableMap>> = mutableMapOf()
+
+ /**
+ * Relationships newly defined in this specific entity. Saves
+ * MutableMap>>
+ */
+ private val inherentRels: MutableMap>> = mutableMapOf()
+
+ /**
+ * Relationships inherited from a parent in the inheritance hierarchy. A node with this label
+ * can have this relationship if it is non-nullable. Saves
+ * MutableMap>>
+ */
+ private val inheritedRels: MutableMap>> = mutableMapOf()
+
+ /**
+ * Relationships newly defined in this specific entity. Saves
+ * MutableMap>>
+ */
+ private val inherentProperties: MutableMap>> =
+ mutableMapOf()
+
+ /**
+ * Relationships inherited from a parent in the inheritance hierarchy. A node with this label
+ * can have this relationship if it is non-nullable. Saves
+ * MutableMap>>
+ */
+ private val inheritedProperties: MutableMap>> =
+ mutableMapOf()
+
+ /**
+ * Relationships defined by children in the inheritance hierarchy. A node with this label can
+ * have this relationship also has the label of the defining child entity. Saves
+ * MutableMap>>
+ */
+ private val childrensRels: MutableMap>> = mutableMapOf()
+
+ /**
+ * Stores a mapping from class information in combination with a relationship name, to the field
+ * information that contains the relationship.
+ */
+ private val relationshipFields: MutableMap, FieldInfo> = mutableMapOf()
+
+ /**
+ * Extracts information on the nodes and edges that can be persisted to the neo4 database over
+ * the OGM.
+ */
+ fun extractSchema() {
+ val meta = MetaData(Node.javaClass.packageName)
+ val nodeClassInfo =
+ meta.persistentEntities().first { it.underlyingClass == Node::class.java }
+ val entities =
+ meta.persistentEntities().filter {
+ Node::class.java.isAssignableFrom(it.underlyingClass) && !it.isRelationshipEntity
+ } // Node to filter for, filter out what is not explicitly a
+
+ entities.forEach { entity ->
+ val superC = entity.directSuperclass()
+
+ hierarchy[entity] =
+ Pair(
+ if (superC in entities) superC else null,
+ entity
+ .directSubclasses()
+ .filter { it in entities }
+ .distinct() // Filter out duplicates
+ )
+ }
+
+ // node in neo4j
+ entities.forEach { classInfo ->
+ val key = meta.schema.findNode(classInfo.neo4jName())
+ allRels[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName] =
+ key.relationships().entries.map { Pair(it.key, it.value.type()) }.toSet()
+ }
+
+ // Complements the hierarchy and relationship information for abstract classes
+ completeSchema(allRels, hierarchy, nodeClassInfo)
+ // Searches for all relationships and properties backed by a class field to know which
+ // of them are newly defined in the entity class
+ entities.forEach { entity ->
+ val fields =
+ entity.relationshipFields().filter {
+ it.field.declaringClass == entity.underlyingClass
+ }
+ fields.forEach { relationshipFields.put(Pair(entity, it.name), it) }
+ val name = entity.neo4jName() ?: entity.underlyingClass.simpleName
+ allRels[name]?.let { relationPair ->
+ inherentRels[name] =
+ relationPair.filter { rel -> fields.any { it.name == rel.first } }.toSet()
+ }
+
+ // Extracting the key-value pairs that are persisted as node properties
+ entity.propertyFields().forEach { property ->
+ val persistedField =
+ if (
+ property.hasCompositeConverter() &&
+ property.compositeConverter is CpgCompositeConverter
+ ) {
+ (property.compositeConverter as CpgCompositeConverter).graphSchema
+ } else {
+ listOf>(
+ Pair(property.field.type.simpleName, property.name)
+ )
+ }
+
+ if (property.field.declaringClass == entity.underlyingClass) {
+ inherentProperties
+ .computeIfAbsent(name) { mutableSetOf() }
+ .addAll(persistedField)
+ } else {
+ inheritedProperties
+ .computeIfAbsent(name) { mutableSetOf() }
+ .addAll(persistedField)
+ }
+ }
+ }
+
+ // Determines the relationships an entity inherits by propagating the relationships from
+ // parent to child
+ val entityRoots: MutableList =
+ hierarchy.filter { it.value.first == null }.map { it.key }.toMutableList()
+ entityRoots.forEach {
+ inheritedRels[it.neo4jName() ?: it.underlyingClass.simpleName] = mutableSetOf()
+ }
+ entityRoots.forEach { extractFieldInformationFromHierarchy(it) }
+
+ allRels.forEach {
+ childrensRels[it.key] =
+ it.value
+ .subtract(inheritedRels[it.key] ?: emptySet())
+ .subtract(inherentRels[it.key] ?: emptySet())
+ }
+ println()
+ }
+
+ /** Extracts the field information for every entity and relationship. */
+ private fun extractFieldInformationFromHierarchy(classInfo: ClassInfo) {
+ val fields: MutableSet> = mutableSetOf()
+ inherentRels[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let {
+ fields.addAll(it)
+ }
+ inheritedRels[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let {
+ fields.addAll(it)
+ }
+
+ hierarchy[classInfo]?.second?.forEach {
+ inheritedRels[it.neo4jName() ?: it.underlyingClass.simpleName] = fields
+ extractFieldInformationFromHierarchy(it)
+ }
+ }
+
+ /**
+ * Complements the hierarchy and relationship information for abstract classes to not have empty
+ * entities.
+ */
+ private fun completeSchema(
+ relCanHave: MutableMap>>,
+ hierarchy: MutableMap>>,
+ root: ClassInfo
+ ) {
+ hierarchy[root]?.second?.forEach { completeSchema(relCanHave, hierarchy, it) }
+
+ hierarchy.keys
+ .filter { !relCanHave.contains(it.neo4jName() ?: it.underlyingClass.simpleName) }
+ .forEach {
+ relCanHave.put(
+ it.neo4jName() ?: it.underlyingClass.simpleName,
+ hierarchy[it]
+ ?.second
+ ?.flatMap { classInfo ->
+ relCanHave[
+ classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]
+ ?: setOf()
+ }
+ ?.toSet() ?: setOf()
+ )
+ }
+ }
+
+ /**
+ * Depending on the specified output format the Neo4j Schema for the CPG is printed to the
+ * specified file.
+ */
+ fun printToFile(fileName: String, format: Format) {
+ val fileExtension = if (Format.MARKDOWN == format) ".md" else ".json"
+ val file =
+ File(if (fileName.endsWith(fileExtension)) fileName else fileName + fileExtension)
+ file.parentFile.mkdirs()
+ file.createNewFile()
+ file.printWriter().use { out ->
+ val entityRoots: MutableList =
+ hierarchy.filter { it.value.first == null }.map { it.key }.toMutableList()
+ if (format == Format.MARKDOWN) {
+ out.println(header)
+ entityRoots.forEach { printEntitiesToMarkdown(it, out) }
+ } else {
+ entityRoots.forEach {
+ val objectMapper = ObjectMapper()
+ objectMapper.writeValue(out, entitiesToJson(it))
+ }
+ }
+ }
+ }
+
+ /**
+ * Prints a section for every entity with a list of labels (e.g. superclasses), a list of
+ * relationships, a dropdown with inherited relationships, a list of properties and a dropdown
+ * with inherited properties.
+ *
+ * Generates links between the boxes.
+ */
+ private fun printEntitiesToMarkdown(classInfo: ClassInfo, out: PrintWriter) {
+ val entityLabel = toLabel(classInfo)
+
+ out.println("## $entityLabel")
+
+ if (hierarchy[classInfo]?.first != null) {
+ out.print("**Labels**:")
+
+ hierarchy[classInfo]?.first?.let {
+ getHierarchy(it).forEach {
+ out.print(
+ getBoxWithClass(
+ "superclassLabel",
+ "[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})"
+ )
+ )
+ }
+ }
+ out.print(
+ getBoxWithClass("classLabel", "[${entityLabel}](#${toAnchorLink("e$entityLabel")})")
+ )
+ out.println()
+ }
+ if (hierarchy[classInfo]?.second?.isNotEmpty() == true) {
+ out.println("### Children")
+
+ hierarchy[classInfo]?.second?.let {
+ if (it.isNotEmpty()) {
+ it.forEach { classInfo ->
+ out.print(
+ getBoxWithClass(
+ "child",
+ "[${toLabel(classInfo)}](#${toAnchorLink("e"+toLabel(classInfo))})"
+ )
+ )
+ }
+ out.println()
+ }
+ }
+ }
+
+ if (inherentRels.isNotEmpty() && inheritedRels.isNotEmpty()) {
+ out.println("### Relationships")
+
+ removeLabelDuplicates(inherentRels[entityLabel])?.forEach {
+ out.print(
+ getBoxWithClass(
+ "relationship",
+ "[${it.second}](#${ toLabel(classInfo) + it.second})"
+ )
+ )
+ }
+
+ if (inheritedRels[entityLabel]?.isNotEmpty() == true) {
+ out.println("Inherited Relationships
")
+ out.println()
+ removeLabelDuplicates(inheritedRels[entityLabel])?.forEach { inherited ->
+ var current = classInfo
+ var baseClass: ClassInfo? = null
+ while (baseClass == null) {
+ inherentRels[toLabel(current)]?.let { rels ->
+ if (rels.any { it.second == inherited.second }) {
+ baseClass = current
+ }
+ }
+ hierarchy[current]?.first?.let { current = it }
+ }
+ out.println(
+ getBoxWithClass(
+ "inherited-relationship",
+ "[${inherited.second}](#${toConcatName(toLabel(baseClass) + inherited.second)})"
+ )
+ )
+ }
+ out.println(" ")
+ out.println()
+ }
+
+ removeLabelDuplicates(inherentRels[entityLabel])?.forEach {
+ printRelationshipsToMarkdown(classInfo, it, out)
+ }
+ }
+
+ if (inherentProperties.isNotEmpty() && inheritedProperties.isNotEmpty()) {
+ out.println("### Properties")
+
+ removeLabelDuplicates(inherentProperties[entityLabel])?.forEach {
+ out.println("${it.second} : ${it.first}")
+ out.println()
+ }
+ if (inheritedProperties[entityLabel]?.isNotEmpty() == true) {
+ out.println("Inherited Properties
")
+ removeLabelDuplicates(inheritedProperties[entityLabel])?.forEach {
+ out.println("${it.second} : ${it.first}")
+ out.println()
+ }
+ out.println(" ")
+ out.println()
+ }
+ }
+
+ hierarchy[classInfo]?.second?.forEach { printEntitiesToMarkdown(it, out) }
+ }
+
+ /**
+ * Prints a section for every entity with a list of labels (e.g. superclasses), a list of
+ * relationships, a dropdown with inherited relationships, a list of properties and a dropdown
+ * with inherited properties.
+ *
+ * Generates links between the boxes.
+ */
+ private fun entitiesToJson(classInfo: ClassInfo): MutableList {
+ val entityLabel = toLabel(classInfo)
+
+ val labels: MutableSet = mutableSetOf()
+ if (hierarchy[classInfo]?.first != null) {
+
+ hierarchy[classInfo]?.first?.let {
+ getHierarchy(it).forEach { labels.add(toLabel(it)) }
+ }
+ labels.add(entityLabel)
+ }
+ val childLabels: MutableSet = mutableSetOf()
+ if (hierarchy[classInfo]?.second?.isNotEmpty() == true) {
+
+ hierarchy[classInfo]?.second?.let {
+ if (it.isNotEmpty()) {
+ it.forEach { classInfo -> childLabels.add(toLabel(classInfo)) }
+ }
+ }
+ }
+
+ val relationships: MutableSet = mutableSetOf()
+ if (inherentRels.isNotEmpty() && inheritedRels.isNotEmpty()) {
+
+ if (inheritedRels[entityLabel]?.isNotEmpty() == true) {
+ removeLabelDuplicates(inheritedRels[entityLabel])?.forEach { inherited ->
+ var current = classInfo
+ var baseClass: ClassInfo? = null
+ while (baseClass == null) {
+ inherentRels[toLabel(current)]?.let { rels ->
+ if (rels.any { it.second == inherited.second }) {
+ baseClass = current
+ }
+ }
+ hierarchy[current]?.first?.let { current = it }
+ }
+ baseClass?.let { relationshipsToJson(it, inherited) }
+ }
+ }
+
+ removeLabelDuplicates(inherentRels[entityLabel])?.forEach {
+ relationships.add(relationshipsToJson(classInfo, it))
+ }
+ }
+
+ val properties: MutableSet = mutableSetOf()
+ if (inherentProperties.isNotEmpty() && inheritedProperties.isNotEmpty()) {
+
+ removeLabelDuplicates(inherentProperties[entityLabel])?.forEach {
+ properties.add(SchemaProperty(it.second, it.first, false))
+ }
+ if (inheritedProperties[entityLabel]?.isNotEmpty() == true) {
+ removeLabelDuplicates(inheritedProperties[entityLabel])?.forEach {
+ properties.add(SchemaProperty(it.second, it.first, true))
+ }
+ }
+ }
+ val entityNodes =
+ hierarchy[classInfo]?.second?.flatMap { entitiesToJson(it) }?.toMutableList()
+ ?: mutableListOf()
+ entityNodes.add(0, SchemaNode(entityLabel, labels, childLabels, relationships, properties))
+
+ return entityNodes
+ }
+
+ private fun removeLabelDuplicates(
+ list: Set>?
+ ): Set>? {
+ if (list == null) return null
+ return list
+ .map { it.second }
+ .distinct()
+ .map { label -> list.first { it.second == label } }
+ .toSet()
+ }
+
+ private fun toLabel(classInfo: ClassInfo?): String {
+ if (classInfo == null) {
+ return "Node"
+ }
+ return classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName
+ }
+
+ /** Creates a unique markdown anchor to make navigation unambiguous. */
+ private fun toAnchorLink(entityName: String): String {
+ return toConcatName(entityName).lowercase(Locale.getDefault())
+ }
+
+ private fun toConcatName(entityName: String): String {
+ return entityName.replace(" ", "-")
+ }
+
+ private fun openMermaid(out: PrintWriter) {
+ out.println(
+ "```mermaid\n" +
+ "flowchart LR\n" +
+ " classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5;" +
+ " classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;"
+ )
+ }
+
+ private fun closeMermaid(out: PrintWriter) {
+ out.println("```")
+ }
+
+ private fun getHierarchy(classInfo: ClassInfo): MutableList {
+ val inheritance: MutableList = mutableListOf()
+ hierarchy[classInfo]?.first?.let { inheritance.addAll(getHierarchy(it)) }
+ inheritance.add(classInfo)
+ return inheritance
+ }
+
+ /**
+ * By specifying a field that constitutes a relationship, this function returns information on
+ * the multiplicity and the target class entity.
+ */
+ private fun getTargetInfo(fInfo: FieldInfo): Pair {
+ val type = fInfo.field.genericType
+ relationshipFields
+ .map { it.value.field.genericType }
+ .filterIsInstance()
+ .map { it.rawType }
+ val baseClass: Type? = getNestedBaseType(type)
+ val multiplicity = getNestedMultiplicity(type)
+
+ var targetClassInfo: ClassInfo? = null
+ if (baseClass != null) {
+ targetClassInfo =
+ hierarchy
+ .map { it.key }
+ .firstOrNull {
+ it.underlyingClass.canonicalName in baseClass.typeName.split(" ")
+ }
+ }
+
+ return Pair(multiplicity, targetClassInfo)
+ }
+
+ private fun getNestedBaseType(type: Type): Type? {
+ if (type is ParameterizedType) {
+ return type.actualTypeArguments.map { getNestedBaseType(it) }.firstOrNull()
+ }
+ return type
+ }
+
+ private fun getNestedMultiplicity(type: Type): Boolean {
+ if (type is ParameterizedType) {
+ return if (type.rawType.typeName.substringBeforeLast(".") == "java.util") {
+ true
+ } else {
+ type.actualTypeArguments.any { getNestedMultiplicity(it) }
+ }
+ }
+ return false
+ }
+
+ private fun getBoxWithClass(cssClass: String, text: String): String {
+ return "${text}\n"
+ }
+
+ private fun printRelationshipsToMarkdown(
+ classInfo: ClassInfo,
+ relationshipLabel: Pair,
+ out: PrintWriter
+ ) {
+ val fieldInfo: FieldInfo = classInfo.getFieldInfo(relationshipLabel.first)
+ val targetInfo = getTargetInfo(fieldInfo)
+ val multiplicity = if (targetInfo.first) "*" else "¹"
+ out.println(
+ "#### ${relationshipLabel.second}"
+ )
+ openMermaid(out)
+ out.println(
+ "${toLabel(classInfo)}--\"${relationshipLabel.second}${multiplicity}\"-->${toLabel(classInfo)}${relationshipLabel.second}[${toLabel(targetInfo.second)}]:::outer"
+ )
+ closeMermaid(out)
+ }
+
+ private fun relationshipsToJson(
+ classInfo: ClassInfo,
+ relationshipLabel: Pair
+ ): SchemaRelationship {
+ val fieldInfo: FieldInfo = classInfo.getFieldInfo(relationshipLabel.first)
+ val targetInfo = getTargetInfo(fieldInfo)
+ val multiplicity = if (targetInfo.first) '*' else '1'
+ return SchemaRelationship(relationshipLabel.second, toLabel(classInfo), multiplicity)
+ }
+}
diff --git a/cpg-neo4j/src/test/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/ApplicationTest.kt b/cpg-neo4j/src/test/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/ApplicationTest.kt
index 949418253c..412906fbfb 100644
--- a/cpg-neo4j/src/test/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/ApplicationTest.kt
+++ b/cpg-neo4j/src/test/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/ApplicationTest.kt
@@ -25,13 +25,17 @@
*/
package de.fraunhofer.aisec.cpg_vis_neo4j
+import com.fasterxml.jackson.databind.ObjectMapper
import de.fraunhofer.aisec.cpg.*
import de.fraunhofer.aisec.cpg.graph.builder.*
import de.fraunhofer.aisec.cpg.graph.declarations.FunctionDeclaration
import de.fraunhofer.aisec.cpg.graph.functions
import de.fraunhofer.aisec.cpg.graph.statements.expressions.CallExpression
import de.fraunhofer.aisec.cpg.graph.types.*
+import java.io.File
+import java.nio.file.Files
import java.nio.file.Paths
+import kotlin.io.path.Path
import kotlin.io.path.createTempFile
import kotlin.reflect.jvm.javaField
import kotlin.test.Test
@@ -39,6 +43,7 @@ import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import org.junit.jupiter.api.Tag
import org.neo4j.ogm.annotation.Relationship
+import org.neo4j.ogm.config.ObjectMapperFactory.objectMapper
import picocli.CommandLine
@Tag("integration")
@@ -123,4 +128,26 @@ class ApplicationTest {
application.exportToJson(translationResult, path)
assert(path.length() > 0)
}
+
+ @Test
+ fun testExportMarkdownSchema() {
+ val path = "./tmp.md"
+ Application().printSchema(listOf(path), Schema.Format.MARKDOWN)
+ // Some magic number as size, where the current schema is larger and should never be lower
+ // in the future
+ assert(File(path).length() > 100000)
+ Files.deleteIfExists(Path(path))
+ }
+
+ @Test
+ fun testExportJSONSchema() {
+ val path = "./tmp.json"
+ Application().printSchema(listOf(path), Schema.Format.JSON)
+ val file = File(path)
+ val objectMapper: ObjectMapper = ObjectMapper()
+ val schema = objectMapper.readValue(file, List::class.java)
+ assert(schema is ArrayList)
+ assert((schema as ArrayList).size > 0)
+ Files.deleteIfExists(Path(path))
+ }
}
diff --git a/docs/docs/CPG/specs/dfg.md b/docs/docs/CPG/specs/dfg.md
index e1bc885f9c..af1138bf60 100755
--- a/docs/docs/CPG/specs/dfg.md
+++ b/docs/docs/CPG/specs/dfg.md
@@ -2,6 +2,10 @@
The Data Flow Graph (DFG) is built as edges between nodes. Each node has a set of incoming data flows (`prevDFG`) and outgoing data flows (`nextDFG`). In the following, we summarize how different types of nodes construct the respective data flows.
+{:style="background:#dddddd"}
+[Statement](#estatement)
+
+[Statement](#estatement)
## CallExpression
diff --git a/docs/docs/CPG/specs/graph.md b/docs/docs/CPG/specs/graph.md
index 7e594aad52..f05b76461e 100644
--- a/docs/docs/CPG/specs/graph.md
+++ b/docs/docs/CPG/specs/graph.md
@@ -12,29 +12,30 @@ This file shows all node labels and relationships between them that are persiste
[Annotation](#eannotation)
### Relationships
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
-
+[CDG](#NodeCDG)
+[DFG](#NodeDFG)
[ANNOTATIONS](#NodeANNOTATIONS)
-
+[PDG](#NodePDG)
[AST](#NodeAST)
-
[SCOPE](#NodeSCOPE)
-
-[TYPEDEFS](#NodeTYPEDEFS)
-
-#### DFG
+#### EOG
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"DFG*"-->NodeDFG[Node]:::outer
+Node--"EOG*"-->NodeEOG[Node]:::outer
```
-#### EOG
+#### CDG
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"EOG*"-->NodeEOG[Node]:::outer
+Node--"CDG*"-->NodeCDG[Node]:::outer
+```
+#### DFG
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+Node--"DFG*"-->NodeDFG[Node]:::outer
```
#### ANNOTATIONS
```mermaid
@@ -42,24 +43,55 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
Node--"ANNOTATIONS*"-->NodeANNOTATIONS[Annotation]:::outer
```
-#### AST
+#### PDG
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"AST*"-->NodeAST[Node]:::outer
+Node--"PDG*"-->NodePDG[Node]:::outer
```
-#### SCOPE
+#### AST
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer
+Node--"AST*"-->NodeAST[Node]:::outer
```
-#### TYPEDEFS
+#### SCOPE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclaration]:::outer
+Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer
```
+### Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
## Statement
**Labels**:[Node](#enode)
[Statement](#estatement)
@@ -67,17 +99,15 @@ Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclarati
### Children
[AssertStatement](#eassertstatement)
[DoStatement](#edostatement)
+[Expression](#eexpression)
[CaseStatement](#ecasestatement)
[ReturnStatement](#ereturnstatement)
-[Expression](#eexpression)
[IfStatement](#eifstatement)
-[DeclarationStatement](#edeclarationstatement)
[ForStatement](#eforstatement)
[CatchClause](#ecatchclause)
[SwitchStatement](#eswitchstatement)
[GotoStatement](#egotostatement)
[WhileStatement](#ewhilestatement)
-[BlockStatement](#ecompoundstatement)
[ContinueStatement](#econtinuestatement)
[DefaultStatement](#edefaultstatement)
[SynchronizedStatement](#esynchronizedstatement)
@@ -85,22 +115,28 @@ Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclarati
[ForEachStatement](#eforeachstatement)
[LabelStatement](#elabelstatement)
[BreakStatement](#ebreakstatement)
+[DeclarationStatement](#edeclarationstatement)
[EmptyStatement](#eemptystatement)
### Relationships
[LOCALS](#StatementLOCALS)
-
-[DFG](#NodeDFG)
+Inherited Relationships
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
#### LOCALS
```mermaid
@@ -108,42 +144,114 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
Statement--"LOCALS*"-->StatementLOCALS[VariableDeclaration]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
## AssertStatement
**Labels**:[Node](#enode)
[Statement](#estatement)
[AssertStatement](#eassertstatement)
### Relationships
-[CONDITION](#AssertStatementCONDITION)
-
[MESSAGE](#AssertStatementMESSAGE)
+[CONDITION](#AssertStatementCONDITION)
+Inherited Relationships
[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CONDITION
+#### MESSAGE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer
+AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer
```
-#### MESSAGE
+#### CONDITION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer
+AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
## DoStatement
**Labels**:[Node](#enode)
[Statement](#estatement)
@@ -151,22 +259,26 @@ AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Stat
### Relationships
[CONDITION](#DoStatementCONDITION)
-
[STATEMENT](#DoStatementSTATEMENT)
+Inherited Relationships
[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
#### CONDITION
```mermaid
@@ -180,2913 +292,6248 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
DoStatement--"STATEMENT¹"-->DoStatementSTATEMENT[Statement]:::outer
```
-## CaseStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[CaseStatement](#ecasestatement)
-
-### Relationships
-[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION)
+### Properties
+Inherited Properties
+code : String
-[LOCALS](#StatementLOCALS)
-
-[DFG](#NodeDFG)
+argumentIndex : int
-[EOG](#NodeEOG)
+file : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+isImplicit : boolean
-[AST](#NodeAST)
+fullName : String
-[SCOPE](#NodeSCOPE)
+localName : String
-[TYPEDEFS](#NodeTYPEDEFS)
+name : String
-#### CASE_EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer
-```
-## ReturnStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[ReturnStatement](#ereturnstatement)
+nameDelimiter : String
-### Relationships
-[RETURN_VALUES](#ReturnStatementRETURN_VALUES)
+comment : String
-[LOCALS](#StatementLOCALS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### RETURN_VALUES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer
-```
## Expression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
### Children
+[RangeExpression](#erangeexpression)
[NewExpression](#enewexpression)
[LambdaExpression](#elambdaexpression)
[UnaryOperator](#eunaryoperator)
-[ArrayRangeExpression](#earrayrangeexpression)
+[Block](#eblock)
[CallExpression](#ecallexpression)
-[DesignatedInitializerExpression](#edesignatedinitializerexpression)
+[NewArrayExpression](#enewarrayexpression)
[KeyValueExpression](#ekeyvalueexpression)
[AssignExpression](#eassignexpression)
[CastExpression](#ecastexpression)
-[NewArrayExpression](#earraycreationexpression)
-[SubscriptionExpression](#earraysubscriptionexpression)
[TypeExpression](#etypeexpression)
+[Reference](#ereference)
[BinaryOperator](#ebinaryoperator)
[ConditionalExpression](#econditionalexpression)
-[Reference](#edeclaredreferenceexpression)
[InitializerListExpression](#einitializerlistexpression)
[DeleteExpression](#edeleteexpression)
-[BlockStatementExpression](#ecompoundstatementexpression)
+[SubscriptExpression](#esubscriptexpression)
[ProblemExpression](#eproblemexpression)
[Literal](#eliteral)
[TypeIdExpression](#etypeidexpression)
[ExpressionList](#eexpressionlist)
### Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-
[TYPE](#ExpressionTYPE)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
+Inherited Relationships
[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### POSSIBLE_SUB_TYPES
+#### TYPE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Expression--"POSSIBLE_SUB_TYPES*"-->ExpressionPOSSIBLE_SUB_TYPES[Type]:::outer
+Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer
```
-#### TYPE
+#### ASSIGNED_TYPES
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer
+Expression--"ASSIGNED_TYPES*"-->ExpressionASSIGNED_TYPES[Type]:::outer
```
-## NewExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[NewExpression](#enewexpression)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[INITIALIZER](#NewExpressionINITIALIZER)
+argumentIndex : int
-[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS)
+file : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+isImplicit : boolean
-[TYPE](#ExpressionTYPE)
+fullName : String
-[LOCALS](#StatementLOCALS)
+localName : String
-[DFG](#NodeDFG)
+name : String
-[EOG](#NodeEOG)
+nameDelimiter : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+comment : String
-[AST](#NodeAST)
+artifact : String
-[SCOPE](#NodeSCOPE)
+startLine : int
-[TYPEDEFS](#NodeTYPEDEFS)
+endLine : int
-#### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer
-```
-#### TEMPLATE_PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer
-```
-## LambdaExpression
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## RangeExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[LambdaExpression](#elambdaexpression)
+[RangeExpression](#erangeexpression)
### Relationships
-[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES)
-
-[FUNCTION](#LambdaExpressionFUNCTION)
-
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[CEILING](#RangeExpressionCEILING)
+[THIRD](#RangeExpressionTHIRD)
+[FLOOR](#RangeExpressionFLOOR)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### MUTABLE_VARIABLES
+#### CEILING
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer
+RangeExpression--"CEILING¹"-->RangeExpressionCEILING[Expression]:::outer
```
-#### FUNCTION
+#### THIRD
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer
+RangeExpression--"THIRD¹"-->RangeExpressionTHIRD[Expression]:::outer
```
-## UnaryOperator
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[UnaryOperator](#eunaryoperator)
+#### FLOOR
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RangeExpression--"FLOOR¹"-->RangeExpressionFLOOR[Expression]:::outer
+```
+### Properties
+operatorCode : String
-### Relationships
-[INPUT](#UnaryOperatorINPUT)
+Inherited Properties
+code : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+argumentIndex : int
-[TYPE](#ExpressionTYPE)
+file : String
-[LOCALS](#StatementLOCALS)
+isImplicit : boolean
-[DFG](#NodeDFG)
+fullName : String
-[EOG](#NodeEOG)
+localName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+name : String
-[AST](#NodeAST)
+nameDelimiter : String
-[SCOPE](#NodeSCOPE)
+comment : String
-[TYPEDEFS](#NodeTYPEDEFS)
+artifact : String
-#### INPUT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer
-```
-## ArrayRangeExpression
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## NewExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[ArrayRangeExpression](#earrayrangeexpression)
+[NewExpression](#enewexpression)
### Relationships
-[CEILING](#ArrayRangeExpressionCEILING)
+[INITIALIZER](#NewExpressionINITIALIZER)
+[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS)
+Inherited Relationships
-[STEP](#ArrayRangeExpressionSTEP)
+[TYPE](#ExpressionTYPE)
-[FLOOR](#ArrayRangeExpressionFLOOR)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[LOCALS](#StatementLOCALS)
-[TYPE](#ExpressionTYPE)
+[EOG](#NodeEOG)
-[LOCALS](#StatementLOCALS)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CEILING
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ArrayRangeExpression--"CEILING¹"-->ArrayRangeExpressionCEILING[Expression]:::outer
-```
-#### STEP
+#### INITIALIZER
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ArrayRangeExpression--"STEP¹"-->ArrayRangeExpressionSTEP[Expression]:::outer
+NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer
```
-#### FLOOR
+#### TEMPLATE_PARAMETERS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ArrayRangeExpression--"FLOOR¹"-->ArrayRangeExpressionFLOOR[Expression]:::outer
+NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer
```
-## CallExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[CallExpression](#ecallexpression)
+### Properties
+Inherited Properties
+code : String
-### Children
-[ConstructorCallExpression](#eexplicitconstructorinvocation)
-[ConstructExpression](#econstructexpression)
-[MemberCallExpression](#emembercallexpression)
+argumentIndex : int
-### Relationships
-[CALLEE](#CallExpressionCALLEE)
+file : String
-[INVOKES](#CallExpressionINVOKES)
+isImplicit : boolean
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+fullName : String
-[ARGUMENTS](#CallExpressionARGUMENTS)
+localName : String
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
+name : String
+
+nameDelimiter : String
+
+comment : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## LambdaExpression
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[Expression](#eexpression)
+[LambdaExpression](#elambdaexpression)
+
+### Relationships
+[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES)
+[FUNCTION](#LambdaExpressionFUNCTION)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CALLEE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer
-```
-#### INVOKES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer
-```
-#### TEMPLATE_INSTANTIATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer
-```
-#### ARGUMENTS
+#### MUTABLE_VARIABLES
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer
+LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer
```
-#### TEMPLATE_PARAMETERS
+#### FUNCTION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer
+LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer
```
-## ConstructorCallExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[CallExpression](#ecallexpression)
-[ConstructorCallExpression](#eexplicitconstructorinvocation)
+### Properties
+areVariablesMutable : boolean
-### Relationships
-[CALLEE](#CallExpressionCALLEE)
+Inherited Properties
+code : String
-[INVOKES](#CallExpressionINVOKES)
+argumentIndex : int
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+file : String
-[ARGUMENTS](#CallExpressionARGUMENTS)
+isImplicit : boolean
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
+fullName : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+localName : String
-[TYPE](#ExpressionTYPE)
+name : String
-[LOCALS](#StatementLOCALS)
+nameDelimiter : String
-[DFG](#NodeDFG)
+comment : String
-[EOG](#NodeEOG)
+artifact : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+startLine : int
-[AST](#NodeAST)
+endLine : int
-[SCOPE](#NodeSCOPE)
+startColumn : int
-[TYPEDEFS](#NodeTYPEDEFS)
+endColumn : int
-## ConstructExpression
+isInferred : boolean
+
+
+
+## UnaryOperator
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[CallExpression](#ecallexpression)
-[ConstructExpression](#econstructexpression)
+[UnaryOperator](#eunaryoperator)
### Relationships
-[INSTANTIATES](#ConstructExpressionINSTANTIATES)
-
-[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR)
-
-[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS)
-
-[CALLEE](#CallExpressionCALLEE)
-
-[INVOKES](#CallExpressionINVOKES)
-
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+[INPUT](#UnaryOperatorINPUT)
+Inherited Relationships
-[ARGUMENTS](#CallExpressionARGUMENTS)
+[TYPE](#ExpressionTYPE)
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[LOCALS](#StatementLOCALS)
-[TYPE](#ExpressionTYPE)
+[EOG](#NodeEOG)
-[LOCALS](#StatementLOCALS)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### INSTANTIATES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer
-```
-#### CONSTRUCTOR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer
-```
-#### ANOYMOUS_CLASS
+#### INPUT
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer
+UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer
```
-## MemberCallExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[CallExpression](#ecallexpression)
-[MemberCallExpression](#emembercallexpression)
+### Properties
+operatorCode : String
-### Relationships
-[CALLEE](#CallExpressionCALLEE)
+isPostfix : boolean
-[INVOKES](#CallExpressionINVOKES)
+isPrefix : boolean
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+Inherited Properties
+code : String
-[ARGUMENTS](#CallExpressionARGUMENTS)
+argumentIndex : int
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
+file : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+isImplicit : boolean
-[TYPE](#ExpressionTYPE)
+fullName : String
-[LOCALS](#StatementLOCALS)
+localName : String
-[DFG](#NodeDFG)
+name : String
-[EOG](#NodeEOG)
+nameDelimiter : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+comment : String
-[AST](#NodeAST)
+artifact : String
-[SCOPE](#NodeSCOPE)
+startLine : int
+
+endLine : int
+
+startColumn : int
-[TYPEDEFS](#NodeTYPEDEFS)
+endColumn : int
-## DesignatedInitializerExpression
+isInferred : boolean
+
+
+
+## Block
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[DesignatedInitializerExpression](#edesignatedinitializerexpression)
-
-### Relationships
-[LHS](#DesignatedInitializerExpressionLHS)
+[Block](#eblock)
-[RHS](#DesignatedInitializerExpressionRHS)
+### Children
+[DistinctLanguageBlock](#edistinctlanguageblock)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+### Relationships
+[STATEMENTS](#BlockSTATEMENTS)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### LHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DesignatedInitializerExpression--"LHS*"-->DesignatedInitializerExpressionLHS[Expression]:::outer
-```
-#### RHS
+#### STATEMENTS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DesignatedInitializerExpression--"RHS¹"-->DesignatedInitializerExpressionRHS[Expression]:::outer
+Block--"STATEMENTS*"-->BlockSTATEMENTS[Statement]:::outer
```
-## KeyValueExpression
+### Properties
+isStaticBlock : boolean
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## DistinctLanguageBlock
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[KeyValueExpression](#ekeyvalueexpression)
+[Block](#eblock)
+[DistinctLanguageBlock](#edistinctlanguageblock)
### Relationships
-[VALUE](#KeyValueExpressionVALUE)
-
-[KEY](#KeyValueExpressionKEY)
+Inherited Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[STATEMENTS](#BlockSTATEMENTS)
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### VALUE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer
-```
-#### KEY
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer
-```
-## AssignExpression
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+isStaticBlock : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## CallExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[AssignExpression](#eassignexpression)
+[CallExpression](#ecallexpression)
+
+### Children
+[ConstructExpression](#econstructexpression)
+[MemberCallExpression](#emembercallexpression)
### Relationships
-[DECLARATIONS](#AssignExpressionDECLARATIONS)
+[CALLEE](#CallExpressionCALLEE)
+[INVOKES](#CallExpressionINVOKES)
+[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+[ARGUMENTS](#CallExpressionARGUMENTS)
+[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
+Inherited Relationships
-[LHS](#AssignExpressionLHS)
+[TYPE](#ExpressionTYPE)
-[RHS](#AssignExpressionRHS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[LOCALS](#StatementLOCALS)
-[TYPE](#ExpressionTYPE)
+[EOG](#NodeEOG)
-[LOCALS](#StatementLOCALS)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### DECLARATIONS
+#### CALLEE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer
+CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer
```
-#### LHS
+#### INVOKES
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer
+CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer
```
-#### RHS
+#### TEMPLATE_INSTANTIATION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer
+CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer
```
-## CastExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[CastExpression](#ecastexpression)
+#### ARGUMENTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer
+```
+#### TEMPLATE_PARAMETERS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer
+```
+### Properties
+template : boolean
-### Relationships
-[CAST_TYPE](#CastExpressionCAST_TYPE)
+Inherited Properties
+code : String
-[EXPRESSION](#CastExpressionEXPRESSION)
+argumentIndex : int
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+file : String
-[TYPE](#ExpressionTYPE)
+isImplicit : boolean
-[LOCALS](#StatementLOCALS)
+fullName : String
-[DFG](#NodeDFG)
+localName : String
-[EOG](#NodeEOG)
+name : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+nameDelimiter : String
-[AST](#NodeAST)
+comment : String
-[SCOPE](#NodeSCOPE)
+artifact : String
-[TYPEDEFS](#NodeTYPEDEFS)
+startLine : int
-#### CAST_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer
-```
-#### EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer
-```
-## NewArrayExpression
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ConstructExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[NewArrayExpression](#earraycreationexpression)
+[CallExpression](#ecallexpression)
+[ConstructExpression](#econstructexpression)
### Relationships
-[INITIALIZER](#NewArrayExpressionINITIALIZER)
+[INSTANTIATES](#ConstructExpressionINSTANTIATES)
+[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR)
+[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS)
+Inherited Relationships
-[DIMENSIONS](#NewArrayExpressionDIMENSIONS)
+[CALLEE](#CallExpressionCALLEE)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[INVOKES](#CallExpressionINVOKES)
+
+[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+
+[ARGUMENTS](#CallExpressionARGUMENTS)
+
+[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### INITIALIZER
+#### INSTANTIATES
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewArrayExpression--"INITIALIZER¹"-->NewArrayExpressionINITIALIZER[Expression]:::outer
+ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer
```
-#### DIMENSIONS
+#### CONSTRUCTOR
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewArrayExpression--"DIMENSIONS*"-->NewArrayExpressionDIMENSIONS[Expression]:::outer
+ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer
```
-## SubscriptionExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[SubscriptionExpression](#earraysubscriptionexpression)
+#### ANOYMOUS_CLASS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+template : boolean
-### Relationships
-[ARRAY_EXPRESSION](#SubscriptionExpressionARRAY_EXPRESSION)
+code : String
-[SUBSCRIPT_EXPRESSION](#SubscriptionExpressionSUBSCRIPT_EXPRESSION)
+file : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+isInferred : boolean
-[TYPE](#ExpressionTYPE)
+argumentIndex : int
-[LOCALS](#StatementLOCALS)
+isImplicit : boolean
-[DFG](#NodeDFG)
+fullName : String
-[EOG](#NodeEOG)
+localName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+name : String
-[AST](#NodeAST)
+nameDelimiter : String
-[SCOPE](#NodeSCOPE)
+comment : String
-[TYPEDEFS](#NodeTYPEDEFS)
+artifact : String
-#### ARRAY_EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SubscriptionExpression--"ARRAY_EXPRESSION¹"-->SubscriptionExpressionARRAY_EXPRESSION[Expression]:::outer
-```
-#### SUBSCRIPT_EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SubscriptionExpression--"SUBSCRIPT_EXPRESSION¹"-->SubscriptionExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer
-```
-## TypeExpression
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+
+
+## MemberCallExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[TypeExpression](#etypeexpression)
+[CallExpression](#ecallexpression)
+[MemberCallExpression](#emembercallexpression)
### Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+Inherited Relationships
+
+[CALLEE](#CallExpressionCALLEE)
+
+[INVOKES](#CallExpressionINVOKES)
+
+[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
+
+[ARGUMENTS](#CallExpressionARGUMENTS)
+
+[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## BinaryOperator
+### Properties
+isStatic : boolean
+
+Inherited Properties
+template : boolean
+
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## NewArrayExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[BinaryOperator](#ebinaryoperator)
+[NewArrayExpression](#enewarrayexpression)
### Relationships
-[LHS](#BinaryOperatorLHS)
-
-[RHS](#BinaryOperatorRHS)
-
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[INITIALIZER](#NewArrayExpressionINITIALIZER)
+[DIMENSIONS](#NewArrayExpressionDIMENSIONS)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### LHS
+#### INITIALIZER
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer
+NewArrayExpression--"INITIALIZER¹"-->NewArrayExpressionINITIALIZER[Expression]:::outer
```
-#### RHS
+#### DIMENSIONS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer
+NewArrayExpression--"DIMENSIONS*"-->NewArrayExpressionDIMENSIONS[Expression]:::outer
```
-## ConditionalExpression
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## KeyValueExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[ConditionalExpression](#econditionalexpression)
+[KeyValueExpression](#ekeyvalueexpression)
### Relationships
-[ELSE_EXPR](#ConditionalExpressionELSE_EXPR)
+[VALUE](#KeyValueExpressionVALUE)
+[KEY](#KeyValueExpressionKEY)
+Inherited Relationships
-[THEN_EXPR](#ConditionalExpressionTHEN_EXPR)
+[TYPE](#ExpressionTYPE)
-[CONDITION](#ConditionalExpressionCONDITION)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[LOCALS](#StatementLOCALS)
-[TYPE](#ExpressionTYPE)
+[EOG](#NodeEOG)
-[LOCALS](#StatementLOCALS)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### ELSE_EXPR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConditionalExpression--"ELSE_EXPR¹"-->ConditionalExpressionELSE_EXPR[Expression]:::outer
-```
-#### THEN_EXPR
+#### VALUE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConditionalExpression--"THEN_EXPR¹"-->ConditionalExpressionTHEN_EXPR[Expression]:::outer
+KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer
```
-#### CONDITION
+#### KEY
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer
+KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer
```
-## Reference
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[Reference](#edeclaredreferenceexpression)
+### Properties
+Inherited Properties
+code : String
-### Children
-[MemberExpression](#ememberexpression)
+argumentIndex : int
-### Relationships
-[REFERS_TO](#ReferenceREFERS_TO)
+file : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+isImplicit : boolean
-[TYPE](#ExpressionTYPE)
+fullName : String
-[LOCALS](#StatementLOCALS)
+localName : String
-[DFG](#NodeDFG)
+name : String
-[EOG](#NodeEOG)
+nameDelimiter : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+comment : String
-[AST](#NodeAST)
+artifact : String
-[SCOPE](#NodeSCOPE)
+startLine : int
-[TYPEDEFS](#NodeTYPEDEFS)
+endLine : int
-#### REFERS_TO
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Reference--"REFERS_TO¹"-->ReferenceREFERS_TO[Declaration]:::outer
-```
-## MemberExpression
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## AssignExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[Reference](#edeclaredreferenceexpression)
-[MemberExpression](#ememberexpression)
+[AssignExpression](#eassignexpression)
### Relationships
-[BASE](#MemberExpressionBASE)
-
-[REFERS_TO](#ReferenceREFERS_TO)
-
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[DECLARATIONS](#AssignExpressionDECLARATIONS)
+[LHS](#AssignExpressionLHS)
+[RHS](#AssignExpressionRHS)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### BASE
+#### DECLARATIONS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer
+AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer
```
-## InitializerListExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[InitializerListExpression](#einitializerlistexpression)
-
-### Relationships
-[INITIALIZERS](#InitializerListExpressionINITIALIZERS)
-
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-
-[TYPE](#ExpressionTYPE)
-
-[LOCALS](#StatementLOCALS)
+#### LHS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer
+```
+#### RHS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer
+```
+### Properties
+usedAsExpression : boolean
-[DFG](#NodeDFG)
+operatorCode : String
-[EOG](#NodeEOG)
+Inherited Properties
+code : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+argumentIndex : int
-[AST](#NodeAST)
+file : String
-[SCOPE](#NodeSCOPE)
+isImplicit : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+fullName : String
-#### INITIALIZERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer
-```
-## DeleteExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[DeleteExpression](#edeleteexpression)
+localName : String
-### Relationships
-[OPERAND](#DeleteExpressionOPERAND)
+name : String
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+nameDelimiter : String
-[TYPE](#ExpressionTYPE)
+comment : String
-[LOCALS](#StatementLOCALS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### OPERAND
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer
-```
-## BlockStatementExpression
+## CastExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[BlockStatementExpression](#ecompoundstatementexpression)
+[CastExpression](#ecastexpression)
### Relationships
-[STATEMENT](#BlockStatementExpressionSTATEMENT)
-
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+[CAST_TYPE](#CastExpressionCAST_TYPE)
+[EXPRESSION](#CastExpressionEXPRESSION)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### STATEMENT
+#### CAST_TYPE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BlockStatementExpression--"STATEMENT¹"-->BlockStatementExpressionSTATEMENT[Statement]:::outer
+CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer
```
-## ProblemExpression
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[ProblemExpression](#eproblemexpression)
-
-### Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-
-[TYPE](#ExpressionTYPE)
-
-[LOCALS](#StatementLOCALS)
-
-[DFG](#NodeDFG)
+#### EXPRESSION
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer
+```
+### Properties
+Inherited Properties
+code : String
-[EOG](#NodeEOG)
+argumentIndex : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+file : String
-[AST](#NodeAST)
+isImplicit : boolean
-[SCOPE](#NodeSCOPE)
+fullName : String
-[TYPEDEFS](#NodeTYPEDEFS)
+localName : String
-## Literal
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[Literal](#eliteral)
+name : String
-### Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+nameDelimiter : String
-[TYPE](#ExpressionTYPE)
+comment : String
-[LOCALS](#StatementLOCALS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## TypeIdExpression
+## TypeExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
[Expression](#eexpression)
-[TypeIdExpression](#etypeidexpression)
+[TypeExpression](#etypeexpression)
### Relationships
-[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE)
-
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+Inherited Relationships
[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### REFERENCED_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer
-```
-## ExpressionList
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[Expression](#eexpression)
-[ExpressionList](#eexpressionlist)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[SUBEXPR](#ExpressionListSUBEXPR)
+argumentIndex : int
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
+file : String
-[TYPE](#ExpressionTYPE)
+isImplicit : boolean
-[LOCALS](#StatementLOCALS)
+fullName : String
-[DFG](#NodeDFG)
+localName : String
-[EOG](#NodeEOG)
+name : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+nameDelimiter : String
-[AST](#NodeAST)
+comment : String
-[SCOPE](#NodeSCOPE)
+artifact : String
-[TYPEDEFS](#NodeTYPEDEFS)
+startLine : int
-#### SUBEXPR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer
-```
-## IfStatement
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## Reference
**Labels**:[Node](#enode)
[Statement](#estatement)
-[IfStatement](#eifstatement)
+[Expression](#eexpression)
+[Reference](#ereference)
+
+### Children
+[MemberExpression](#ememberexpression)
### Relationships
-[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION)
+[REFERS_TO](#ReferenceREFERS_TO)
+[ALIASES](#ReferenceALIASES)
+[RESOLUTION_HELPER](#ReferenceRESOLUTION_HELPER)
+Inherited Relationships
-[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT)
+[TYPE](#ExpressionTYPE)
-[THEN_STATEMENT](#IfStatementTHEN_STATEMENT)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[CONDITION](#IfStatementCONDITION)
+[LOCALS](#StatementLOCALS)
-[ELSE_STATEMENT](#IfStatementELSE_STATEMENT)
+[EOG](#NodeEOG)
-[LOCALS](#StatementLOCALS)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CONDITION_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer
-```
-#### INITIALIZER_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer
-```
-#### THEN_STATEMENT
+#### REFERS_TO
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer
+Reference--"REFERS_TO¹"-->ReferenceREFERS_TO[Declaration]:::outer
```
-#### CONDITION
+#### ALIASES
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer
+Reference--"ALIASES*"-->ReferenceALIASES[Node]:::outer
```
-#### ELSE_STATEMENT
+#### RESOLUTION_HELPER
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer
+Reference--"RESOLUTION_HELPER¹"-->ReferenceRESOLUTION_HELPER[Node]:::outer
```
-## DeclarationStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[DeclarationStatement](#edeclarationstatement)
-
-### Children
-[ASMDeclarationStatement](#easmdeclarationstatement)
+### Properties
+access : AccessValues
-### Relationships
-[DECLARATIONS](#DeclarationStatementDECLARATIONS)
+isStaticAccess : boolean
-[LOCALS](#StatementLOCALS)
+Inherited Properties
+code : String
-[DFG](#NodeDFG)
+argumentIndex : int
-[EOG](#NodeEOG)
+file : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+isImplicit : boolean
-[AST](#NodeAST)
+fullName : String
-[SCOPE](#NodeSCOPE)
+localName : String
-[TYPEDEFS](#NodeTYPEDEFS)
+name : String
-#### DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer
-```
-## ASMDeclarationStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[DeclarationStatement](#edeclarationstatement)
-[ASMDeclarationStatement](#easmdeclarationstatement)
+nameDelimiter : String
-### Relationships
-[DECLARATIONS](#DeclarationStatementDECLARATIONS)
+comment : String
-[LOCALS](#StatementLOCALS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## ForStatement
+## MemberExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
-[ForStatement](#eforstatement)
+[Expression](#eexpression)
+[Reference](#ereference)
+[MemberExpression](#ememberexpression)
### Relationships
-[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION)
+[BASE](#MemberExpressionBASE)
+Inherited Relationships
-[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT)
+[REFERS_TO](#ReferenceREFERS_TO)
-[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT)
+[ALIASES](#ReferenceALIASES)
-[CONDITION](#ForStatementCONDITION)
+[RESOLUTION_HELPER](#ReferenceRESOLUTION_HELPER)
-[STATEMENT](#ForStatementSTATEMENT)
+[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CONDITION_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer
-```
-#### INITIALIZER_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer
-```
-#### ITERATION_STATEMENT
+#### BASE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer
+MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer
```
-#### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer
-```
-#### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer
-```
-## CatchClause
+### Properties
+operatorCode : String
+
+Inherited Properties
+access : AccessValues
+
+code : String
+
+isStaticAccess : boolean
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## BinaryOperator
**Labels**:[Node](#enode)
[Statement](#estatement)
-[CatchClause](#ecatchclause)
+[Expression](#eexpression)
+[BinaryOperator](#ebinaryoperator)
+
+### Children
+[ShortCircuitOperator](#eshortcircuitoperator)
### Relationships
-[PARAMETER](#CatchClausePARAMETER)
+[LHS](#BinaryOperatorLHS)
+[RHS](#BinaryOperatorRHS)
+Inherited Relationships
-[BODY](#CatchClauseBODY)
+[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### PARAMETER
+#### LHS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer
+BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer
```
-#### BODY
+#### RHS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CatchClause--"BODY¹"-->CatchClauseBODY[BlockStatement]:::outer
+BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer
```
-## SwitchStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[SwitchStatement](#eswitchstatement)
+### Properties
+operatorCode : String
-### Relationships
-[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT)
+Inherited Properties
+code : String
-[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION)
+argumentIndex : int
-[STATEMENT](#SwitchStatementSTATEMENT)
+file : String
-[SELECTOR](#SwitchStatementSELECTOR)
+isImplicit : boolean
-[LOCALS](#StatementLOCALS)
+fullName : String
-[DFG](#NodeDFG)
+localName : String
-[EOG](#NodeEOG)
+name : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+nameDelimiter : String
-[AST](#NodeAST)
+comment : String
-[SCOPE](#NodeSCOPE)
+artifact : String
-[TYPEDEFS](#NodeTYPEDEFS)
+startLine : int
-#### INITIALIZER_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer
-```
-#### SELECTOR_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer
-```
-#### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer
-```
-#### SELECTOR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer
-```
-## GotoStatement
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ShortCircuitOperator
**Labels**:[Node](#enode)
[Statement](#estatement)
-[GotoStatement](#egotostatement)
+[Expression](#eexpression)
+[BinaryOperator](#ebinaryoperator)
+[ShortCircuitOperator](#eshortcircuitoperator)
### Relationships
-[TARGET_LABEL](#GotoStatementTARGET_LABEL)
+Inherited Relationships
-[LOCALS](#StatementLOCALS)
+[LHS](#BinaryOperatorLHS)
-[DFG](#NodeDFG)
+[RHS](#BinaryOperatorRHS)
+
+[TYPE](#ExpressionTYPE)
+
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### TARGET_LABEL
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer
-```
-## WhileStatement
+### Properties
+Inherited Properties
+code : String
+
+operatorCode : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ConditionalExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
-[WhileStatement](#ewhilestatement)
+[Expression](#eexpression)
+[ConditionalExpression](#econditionalexpression)
### Relationships
-[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION)
+[ELSE_EXPRESSION](#ConditionalExpressionELSE_EXPRESSION)
+[CONDITION](#ConditionalExpressionCONDITION)
+[THEN_EXPRESSION](#ConditionalExpressionTHEN_EXPRESSION)
+Inherited Relationships
-[CONDITION](#WhileStatementCONDITION)
+[TYPE](#ExpressionTYPE)
-[STATEMENT](#WhileStatementSTATEMENT)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CONDITION_DECLARATION
+#### ELSE_EXPRESSION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer
+ConditionalExpression--"ELSE_EXPRESSION¹"-->ConditionalExpressionELSE_EXPRESSION[Expression]:::outer
```
-#### CONDITION
+#### CONDITION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer
+ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer
```
-#### STATEMENT
+#### THEN_EXPRESSION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer
+ConditionalExpression--"THEN_EXPRESSION¹"-->ConditionalExpressionTHEN_EXPRESSION[Expression]:::outer
```
-## BlockStatement
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## InitializerListExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
-[BlockStatement](#ecompoundstatement)
+[Expression](#eexpression)
+[InitializerListExpression](#einitializerlistexpression)
### Relationships
-[STATEMENTS](#BlockStatementSTATEMENTS)
+[INITIALIZERS](#InitializerListExpressionINITIALIZERS)
+Inherited Relationships
-[LOCALS](#StatementLOCALS)
+[TYPE](#ExpressionTYPE)
-[DFG](#NodeDFG)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### STATEMENTS
+#### INITIALIZERS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BlockStatement--"STATEMENTS*"-->BlockStatementSTATEMENTS[Statement]:::outer
+InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer
```
-## ContinueStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[ContinueStatement](#econtinuestatement)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[LOCALS](#StatementLOCALS)
+argumentIndex : int
-[DFG](#NodeDFG)
+file : String
-[EOG](#NodeEOG)
+isImplicit : boolean
-[ANNOTATIONS](#NodeANNOTATIONS)
+fullName : String
-[AST](#NodeAST)
+localName : String
-[SCOPE](#NodeSCOPE)
+name : String
-[TYPEDEFS](#NodeTYPEDEFS)
+nameDelimiter : String
-## DefaultStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[DefaultStatement](#edefaultstatement)
+comment : String
-### Relationships
-[LOCALS](#StatementLOCALS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## SynchronizedStatement
+## DeleteExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
-[SynchronizedStatement](#esynchronizedstatement)
+[Expression](#eexpression)
+[DeleteExpression](#edeleteexpression)
### Relationships
-[BLOCK_STATEMENT](#SynchronizedStatementBLOCK_STATEMENT)
+[OPERAND](#DeleteExpressionOPERAND)
+Inherited Relationships
-[EXPRESSION](#SynchronizedStatementEXPRESSION)
+[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### BLOCK_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SynchronizedStatement--"BLOCK_STATEMENT¹"-->SynchronizedStatementBLOCK_STATEMENT[BlockStatement]:::outer
-```
-#### EXPRESSION
+#### OPERAND
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer
+DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer
```
-## TryStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[TryStatement](#etrystatement)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[RESOURCES](#TryStatementRESOURCES)
+argumentIndex : int
-[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK)
+file : String
-[TRY_BLOCK](#TryStatementTRY_BLOCK)
+isImplicit : boolean
-[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES)
+fullName : String
-[LOCALS](#StatementLOCALS)
+localName : String
-[DFG](#NodeDFG)
+name : String
-[EOG](#NodeEOG)
+nameDelimiter : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+comment : String
-[AST](#NodeAST)
+artifact : String
-[SCOPE](#NodeSCOPE)
+startLine : int
-[TYPEDEFS](#NodeTYPEDEFS)
+endLine : int
-#### RESOURCES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer
-```
-#### FINALLY_BLOCK
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[BlockStatement]:::outer
-```
-#### TRY_BLOCK
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[BlockStatement]:::outer
-```
-#### CATCH_CLAUSES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer
-```
-## ForEachStatement
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## SubscriptExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
-[ForEachStatement](#eforeachstatement)
+[Expression](#eexpression)
+[SubscriptExpression](#esubscriptexpression)
### Relationships
-[STATEMENT](#ForEachStatementSTATEMENT)
+[ARRAY_EXPRESSION](#SubscriptExpressionARRAY_EXPRESSION)
+[SUBSCRIPT_EXPRESSION](#SubscriptExpressionSUBSCRIPT_EXPRESSION)
+Inherited Relationships
-[VARIABLE](#ForEachStatementVARIABLE)
+[TYPE](#ExpressionTYPE)
-[ITERABLE](#ForEachStatementITERABLE)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer
-```
-#### VARIABLE
+#### ARRAY_EXPRESSION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer
+SubscriptExpression--"ARRAY_EXPRESSION¹"-->SubscriptExpressionARRAY_EXPRESSION[Expression]:::outer
```
-#### ITERABLE
+#### SUBSCRIPT_EXPRESSION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer
+SubscriptExpression--"SUBSCRIPT_EXPRESSION¹"-->SubscriptExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer
```
-## LabelStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[LabelStatement](#elabelstatement)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[SUB_STATEMENT](#LabelStatementSUB_STATEMENT)
+argumentIndex : int
-[LOCALS](#StatementLOCALS)
+file : String
-[DFG](#NodeDFG)
+isImplicit : boolean
-[EOG](#NodeEOG)
+fullName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+localName : String
-[AST](#NodeAST)
+name : String
-[SCOPE](#NodeSCOPE)
+nameDelimiter : String
-[TYPEDEFS](#NodeTYPEDEFS)
+comment : String
-#### SUB_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer
-```
-## BreakStatement
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ProblemExpression
**Labels**:[Node](#enode)
[Statement](#estatement)
-[BreakStatement](#ebreakstatement)
+[Expression](#eexpression)
+[ProblemExpression](#eproblemexpression)
### Relationships
-[LOCALS](#StatementLOCALS)
+Inherited Relationships
-[DFG](#NodeDFG)
+[TYPE](#ExpressionTYPE)
+
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## EmptyStatement
-**Labels**:[Node](#enode)
-[Statement](#estatement)
-[EmptyStatement](#eemptystatement)
+### Properties
+problem : String
-### Relationships
-[LOCALS](#StatementLOCALS)
+problemType : ProblemType
-[DFG](#NodeDFG)
+Inherited Properties
+code : String
-[EOG](#NodeEOG)
+argumentIndex : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+file : String
-[AST](#NodeAST)
+isImplicit : boolean
-[SCOPE](#NodeSCOPE)
+fullName : String
-[TYPEDEFS](#NodeTYPEDEFS)
+localName : String
-## Declaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
+name : String
-### Children
-[ValueDeclaration](#evaluedeclaration)
-[TemplateDeclaration](#etemplatedeclaration)
-[EnumDeclaration](#eenumdeclaration)
-[TypedefDeclaration](#etypedefdeclaration)
-[UsingDirective](#eusingdirective)
-[NamespaceDeclaration](#enamespacedeclaration)
-[RecordDeclaration](#erecorddeclaration)
-[DeclarationSequence](#edeclarationsequence)
-[TranslationUnitDeclaration](#etranslationunitdeclaration)
-[IncludeDeclaration](#eincludedeclaration)
+nameDelimiter : String
-### Relationships
-[DFG](#NodeDFG)
+comment : String
-[EOG](#NodeEOG)
+artifact : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+startLine : int
-[AST](#NodeAST)
+endLine : int
-[SCOPE](#NodeSCOPE)
+startColumn : int
-[TYPEDEFS](#NodeTYPEDEFS)
+endColumn : int
-## ValueDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
+isInferred : boolean
-### Children
-[FieldDeclaration](#efielddeclaration)
-[VariableDeclaration](#evariabledeclaration)
-[ProblemDeclaration](#eproblemdeclaration)
-[EnumConstantDeclaration](#eenumconstantdeclaration)
-[FunctionDeclaration](#efunctiondeclaration)
-[ParameterDeclaration](#eparamvariabledeclaration)
-[TypeParameterDeclaration](#etypeparamdeclaration)
+
+
+## Literal
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[Expression](#eexpression)
+[Literal](#eliteral)
### Relationships
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+Inherited Relationships
-[TYPE](#ValueDeclarationTYPE)
+[TYPE](#ExpressionTYPE)
-[USAGE](#ValueDeclarationUSAGE)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### POSSIBLE_SUB_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ValueDeclaration--"POSSIBLE_SUB_TYPES*"-->ValueDeclarationPOSSIBLE_SUB_TYPES[Type]:::outer
-```
-#### TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer
-```
-#### USAGE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[Reference]:::outer
-```
-## FieldDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[FieldDeclaration](#efielddeclaration)
+### Properties
+value : Object
-### Relationships
-[INITIALIZER](#FieldDeclarationINITIALIZER)
+Inherited Properties
+code : String
-[DEFINES](#FieldDeclarationDEFINES)
+argumentIndex : int
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+file : String
-[TYPE](#ValueDeclarationTYPE)
+isImplicit : boolean
-[USAGE](#ValueDeclarationUSAGE)
+fullName : String
-[DFG](#NodeDFG)
+localName : String
-[EOG](#NodeEOG)
+name : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+nameDelimiter : String
-[AST](#NodeAST)
+comment : String
-[SCOPE](#NodeSCOPE)
+artifact : String
-[TYPEDEFS](#NodeTYPEDEFS)
+startLine : int
-#### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FieldDeclaration--"INITIALIZER¹"-->FieldDeclarationINITIALIZER[Expression]:::outer
-```
-#### DEFINES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer
-```
-## VariableDeclaration
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## TypeIdExpression
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[VariableDeclaration](#evariabledeclaration)
+[Statement](#estatement)
+[Expression](#eexpression)
+[TypeIdExpression](#etypeidexpression)
### Relationships
-[INITIALIZER](#VariableDeclarationINITIALIZER)
+[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE)
+Inherited Relationships
-[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS)
+[TYPE](#ExpressionTYPE)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[TYPE](#ValueDeclarationTYPE)
+[LOCALS](#StatementLOCALS)
-[USAGE](#ValueDeclarationUSAGE)
+[EOG](#NodeEOG)
-[DFG](#NodeDFG)
+[CDG](#NodeCDG)
-[EOG](#NodeEOG)
+[DFG](#NodeDFG)
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer
-```
-#### TEMPLATE_PARAMETERS
+#### REFERENCED_TYPE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer
+TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer
```
-## ProblemDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[ProblemDeclaration](#eproblemdeclaration)
+### Properties
+operatorCode : String
-### Relationships
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+Inherited Properties
+code : String
-[TYPE](#ValueDeclarationTYPE)
+argumentIndex : int
-[USAGE](#ValueDeclarationUSAGE)
+file : String
-[DFG](#NodeDFG)
+isImplicit : boolean
-[EOG](#NodeEOG)
+fullName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+localName : String
-[AST](#NodeAST)
+name : String
-[SCOPE](#NodeSCOPE)
+nameDelimiter : String
-[TYPEDEFS](#NodeTYPEDEFS)
+comment : String
-## EnumConstantDeclaration
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ExpressionList
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[EnumConstantDeclaration](#eenumconstantdeclaration)
+[Statement](#estatement)
+[Expression](#eexpression)
+[ExpressionList](#eexpressionlist)
### Relationships
-[INITIALIZER](#EnumConstantDeclarationINITIALIZER)
-
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+[SUBEXPR](#ExpressionListSUBEXPR)
+Inherited Relationships
-[TYPE](#ValueDeclarationTYPE)
+[TYPE](#ExpressionTYPE)
-[USAGE](#ValueDeclarationUSAGE)
+[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES)
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### INITIALIZER
+#### SUBEXPR
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer
+ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer
```
-## FunctionDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[FunctionDeclaration](#efunctiondeclaration)
+### Properties
+Inherited Properties
+code : String
-### Children
-[MethodDeclaration](#emethoddeclaration)
+argumentIndex : int
-### Relationships
-[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
+file : String
-[OVERRIDES](#FunctionDeclarationOVERRIDES)
+isImplicit : boolean
-[BODY](#FunctionDeclarationBODY)
+fullName : String
-[RECORDS](#FunctionDeclarationRECORDS)
+localName : String
-[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
+name : String
-[PARAMETERS](#FunctionDeclarationPARAMETERS)
+nameDelimiter : String
-[DEFINES](#FunctionDeclarationDEFINES)
+comment : String
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+artifact : String
-[TYPE](#ValueDeclarationTYPE)
+startLine : int
-[USAGE](#ValueDeclarationUSAGE)
+endLine : int
-[DFG](#NodeDFG)
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## CaseStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[CaseStatement](#ecasestatement)
+
+### Relationships
+[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### THROWS_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer
-```
-#### OVERRIDES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer
-```
-#### BODY
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer
-```
-#### RECORDS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer
-```
-#### RETURN_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer
-```
-#### PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParameterDeclaration]:::outer
-```
-#### DEFINES
+#### CASE_EXPRESSION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer
+CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer
```
-## MethodDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[FunctionDeclaration](#efunctiondeclaration)
-[MethodDeclaration](#emethoddeclaration)
+### Properties
+Inherited Properties
+code : String
-### Children
-[ConstructorDeclaration](#econstructordeclaration)
+argumentIndex : int
-### Relationships
-[RECEIVER](#MethodDeclarationRECEIVER)
+file : String
-[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION)
+isImplicit : boolean
-[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
+fullName : String
-[OVERRIDES](#FunctionDeclarationOVERRIDES)
+localName : String
-[BODY](#FunctionDeclarationBODY)
+name : String
-[RECORDS](#FunctionDeclarationRECORDS)
+nameDelimiter : String
-[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
+comment : String
-[PARAMETERS](#FunctionDeclarationPARAMETERS)
+artifact : String
-[DEFINES](#FunctionDeclarationDEFINES)
+startLine : int
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+endLine : int
-[TYPE](#ValueDeclarationTYPE)
+startColumn : int
-[USAGE](#ValueDeclarationUSAGE)
+endColumn : int
-[DFG](#NodeDFG)
+isInferred : boolean
+
+
+
+## ReturnStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[ReturnStatement](#ereturnstatement)
+
+### Relationships
+[RETURN_VALUES](#ReturnStatementRETURN_VALUES)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### RECEIVER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer
-```
-#### RECORD_DECLARATION
+#### RETURN_VALUES
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer
+ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer
```
-## ConstructorDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[FunctionDeclaration](#efunctiondeclaration)
-[MethodDeclaration](#emethoddeclaration)
-[ConstructorDeclaration](#econstructordeclaration)
-
-### Relationships
-[RECEIVER](#MethodDeclarationRECEIVER)
-
-[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION)
+### Properties
+Inherited Properties
+code : String
-[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
-
-[OVERRIDES](#FunctionDeclarationOVERRIDES)
+argumentIndex : int
-[BODY](#FunctionDeclarationBODY)
+file : String
-[RECORDS](#FunctionDeclarationRECORDS)
+isImplicit : boolean
-[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
+fullName : String
-[PARAMETERS](#FunctionDeclarationPARAMETERS)
+localName : String
-[DEFINES](#FunctionDeclarationDEFINES)
+name : String
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+nameDelimiter : String
-[TYPE](#ValueDeclarationTYPE)
+comment : String
-[USAGE](#ValueDeclarationUSAGE)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## ParameterDeclaration
+## IfStatement
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[ParameterDeclaration](#eparamvariabledeclaration)
+[Statement](#estatement)
+[IfStatement](#eifstatement)
### Relationships
-[DEFAULT](#ParameterDeclarationDEFAULT)
+[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION)
+[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT)
+[THEN_STATEMENT](#IfStatementTHEN_STATEMENT)
+[CONDITION](#IfStatementCONDITION)
+[ELSE_STATEMENT](#IfStatementELSE_STATEMENT)
+Inherited Relationships
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
+[LOCALS](#StatementLOCALS)
-[TYPE](#ValueDeclarationTYPE)
+[EOG](#NodeEOG)
-[USAGE](#ValueDeclarationUSAGE)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### DEFAULT
+#### CONDITION_DECLARATION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ParameterDeclaration--"DEFAULT¹"-->ParameterDeclarationDEFAULT[Expression]:::outer
+IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer
```
-## TypeParameterDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[ValueDeclaration](#evaluedeclaration)
-[TypeParameterDeclaration](#etypeparamdeclaration)
-
-### Relationships
-[DEFAULT](#TypeParameterDeclarationDEFAULT)
-
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-
-[TYPE](#ValueDeclarationTYPE)
+#### INITIALIZER_STATEMENT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer
+```
+#### THEN_STATEMENT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer
+```
+#### CONDITION
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer
+```
+#### ELSE_STATEMENT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer
+```
+### Properties
+isConstExpression : boolean
-[USAGE](#ValueDeclarationUSAGE)
+Inherited Properties
+code : String
-[DFG](#NodeDFG)
+argumentIndex : int
-[EOG](#NodeEOG)
+file : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+isImplicit : boolean
-[AST](#NodeAST)
+fullName : String
-[SCOPE](#NodeSCOPE)
+localName : String
-[TYPEDEFS](#NodeTYPEDEFS)
+name : String
-#### DEFAULT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypeParameterDeclaration--"DEFAULT¹"-->TypeParameterDeclarationDEFAULT[Type]:::outer
-```
-## TemplateDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[TemplateDeclaration](#etemplatedeclaration)
+nameDelimiter : String
-### Children
-[ClassTemplateDeclaration](#eclasstemplatedeclaration)
-[FunctionTemplateDeclaration](#efunctiontemplatedeclaration)
+comment : String
-### Relationships
-[PARAMETERS](#TemplateDeclarationPARAMETERS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer
-```
-## ClassTemplateDeclaration
+## ForStatement
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[TemplateDeclaration](#etemplatedeclaration)
-[ClassTemplateDeclaration](#eclasstemplatedeclaration)
+[Statement](#estatement)
+[ForStatement](#eforstatement)
### Relationships
-[REALIZATION](#ClassTemplateDeclarationREALIZATION)
-
-[PARAMETERS](#TemplateDeclarationPARAMETERS)
+[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION)
+[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT)
+[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT)
+[CONDITION](#ForStatementCONDITION)
+[STATEMENT](#ForStatementSTATEMENT)
+Inherited Relationships
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### REALIZATION
+#### CONDITION_DECLARATION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ClassTemplateDeclaration--"REALIZATION*"-->ClassTemplateDeclarationREALIZATION[RecordDeclaration]:::outer
+ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer
```
-## FunctionTemplateDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[TemplateDeclaration](#etemplatedeclaration)
-[FunctionTemplateDeclaration](#efunctiontemplatedeclaration)
-
-### Relationships
-[REALIZATION](#FunctionTemplateDeclarationREALIZATION)
-
-[PARAMETERS](#TemplateDeclarationPARAMETERS)
-
-[DFG](#NodeDFG)
-
-[EOG](#NodeEOG)
-
-[ANNOTATIONS](#NodeANNOTATIONS)
-
-[AST](#NodeAST)
-
-[SCOPE](#NodeSCOPE)
-
-[TYPEDEFS](#NodeTYPEDEFS)
-
-#### REALIZATION
+#### INITIALIZER_STATEMENT
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer
+ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer
```
-## EnumDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[EnumDeclaration](#eenumdeclaration)
-
-### Relationships
-[ENTRIES](#EnumDeclarationENTRIES)
-
-[SUPER_TYPE_DECLARATIONS](#EnumDeclarationSUPER_TYPE_DECLARATIONS)
-
-[SUPER_TYPES](#EnumDeclarationSUPER_TYPES)
-
-[DFG](#NodeDFG)
-
-[EOG](#NodeEOG)
-
-[ANNOTATIONS](#NodeANNOTATIONS)
-
-[AST](#NodeAST)
-
-[SCOPE](#NodeSCOPE)
-
-[TYPEDEFS](#NodeTYPEDEFS)
-
-#### ENTRIES
+#### ITERATION_STATEMENT
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer
+ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer
```
-#### SUPER_TYPE_DECLARATIONS
+#### CONDITION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumDeclaration--"SUPER_TYPE_DECLARATIONS*"-->EnumDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer
+ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer
```
-#### SUPER_TYPES
+#### STATEMENT
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumDeclaration--"SUPER_TYPES*"-->EnumDeclarationSUPER_TYPES[Type]:::outer
+ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer
```
-## TypedefDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[TypedefDeclaration](#etypedefdeclaration)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[ALIAS](#TypedefDeclarationALIAS)
+argumentIndex : int
-[TYPE](#TypedefDeclarationTYPE)
+file : String
-[DFG](#NodeDFG)
+isImplicit : boolean
-[EOG](#NodeEOG)
+fullName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+localName : String
-[AST](#NodeAST)
+name : String
-[SCOPE](#NodeSCOPE)
+nameDelimiter : String
-[TYPEDEFS](#NodeTYPEDEFS)
+comment : String
-#### ALIAS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer
-```
-#### TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer
-```
-## UsingDirective
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[UsingDirective](#eusingdirective)
+artifact : String
-### Relationships
-[DFG](#NodeDFG)
+startLine : int
-[EOG](#NodeEOG)
+endLine : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+startColumn : int
-[AST](#NodeAST)
+endColumn : int
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## NamespaceDeclaration
+## CatchClause
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[NamespaceDeclaration](#enamespacedeclaration)
+[Statement](#estatement)
+[CatchClause](#ecatchclause)
### Relationships
-[STATEMENTS](#NamespaceDeclarationSTATEMENTS)
-
-[DECLARATIONS](#NamespaceDeclarationDECLARATIONS)
+[BODY](#CatchClauseBODY)
+[PARAMETER](#CatchClausePARAMETER)
+Inherited Relationships
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### STATEMENTS
+#### BODY
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer
+CatchClause--"BODY¹"-->CatchClauseBODY[Block]:::outer
```
-#### DECLARATIONS
+#### PARAMETER
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer
+CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer
```
-## RecordDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[RecordDeclaration](#erecorddeclaration)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[IMPORTS](#RecordDeclarationIMPORTS)
+argumentIndex : int
-[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS)
+file : String
-[FIELDS](#RecordDeclarationFIELDS)
+isImplicit : boolean
-[TEMPLATES](#RecordDeclarationTEMPLATES)
+fullName : String
-[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS)
+localName : String
-[RECORDS](#RecordDeclarationRECORDS)
+name : String
-[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS)
+nameDelimiter : String
-[STATEMENTS](#RecordDeclarationSTATEMENTS)
+comment : String
-[METHODS](#RecordDeclarationMETHODS)
+artifact : String
-[DFG](#NodeDFG)
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## SwitchStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[SwitchStatement](#eswitchstatement)
+
+### Relationships
+[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT)
+[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION)
+[STATEMENT](#SwitchStatementSTATEMENT)
+[SELECTOR](#SwitchStatementSELECTOR)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### IMPORTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer
-```
-#### CONSTRUCTORS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer
-```
-#### FIELDS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer
-```
-#### TEMPLATES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer
-```
-#### STATIC_IMPORTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer
-```
-#### RECORDS
+#### INITIALIZER_STATEMENT
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer
+SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer
```
-#### SUPER_TYPE_DECLARATIONS
+#### SELECTOR_DECLARATION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer
+SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer
```
-#### STATEMENTS
+#### STATEMENT
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer
+SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer
```
-#### METHODS
+#### SELECTOR
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer
+SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer
```
-## DeclarationSequence
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## GotoStatement
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[DeclarationSequence](#edeclarationsequence)
+[Statement](#estatement)
+[GotoStatement](#egotostatement)
### Relationships
-[CHILDREN](#DeclarationSequenceCHILDREN)
+[TARGET_LABEL](#GotoStatementTARGET_LABEL)
+Inherited Relationships
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### CHILDREN
+#### TARGET_LABEL
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer
+GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer
```
-## TranslationUnitDeclaration
-**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[TranslationUnitDeclaration](#etranslationunitdeclaration)
+### Properties
+labelName : String
-### Relationships
-[NAMESPACES](#TranslationUnitDeclarationNAMESPACES)
+Inherited Properties
+code : String
-[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS)
+argumentIndex : int
-[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS)
+file : String
-[INCLUDES](#TranslationUnitDeclarationINCLUDES)
+isImplicit : boolean
-[DFG](#NodeDFG)
+fullName : String
-[EOG](#NodeEOG)
+localName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+name : String
-[AST](#NodeAST)
+nameDelimiter : String
-[SCOPE](#NodeSCOPE)
+comment : String
-[TYPEDEFS](#NodeTYPEDEFS)
+artifact : String
-#### NAMESPACES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer
-```
-#### DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer
-```
-#### STATEMENTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer
-```
-#### INCLUDES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer
-```
-## IncludeDeclaration
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## WhileStatement
**Labels**:[Node](#enode)
-[Declaration](#edeclaration)
-[IncludeDeclaration](#eincludedeclaration)
+[Statement](#estatement)
+[WhileStatement](#ewhilestatement)
### Relationships
-[INCLUDES](#IncludeDeclarationINCLUDES)
-
-[PROBLEMS](#IncludeDeclarationPROBLEMS)
+[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION)
+[CONDITION](#WhileStatementCONDITION)
+[STATEMENT](#WhileStatementSTATEMENT)
+Inherited Relationships
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### INCLUDES
+#### CONDITION_DECLARATION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer
+WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer
```
-#### PROBLEMS
+#### CONDITION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer
+WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer
```
-## Type
-**Labels**:[Node](#enode)
-[Type](#etype)
+#### STATEMENT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer
+```
+### Properties
+Inherited Properties
+code : String
-### Children
-[UnknownType](#eunknowntype)
-[ObjectType](#eobjecttype)
-[ParameterizedType](#eparameterizedtype)
-[PointerType](#epointertype)
-[FunctionPointerType](#efunctionpointertype)
-[TupleType](#etupletype)
-[IncompleteType](#eincompletetype)
-[ReferenceType](#ereferencetype)
-[FunctionType](#efunctiontype)
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ContinueStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[ContinueStatement](#econtinuestatement)
### Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
+Inherited Relationships
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### SUPER_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer
-```
-## UnknownType
+### Properties
+label : String
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## DefaultStatement
**Labels**:[Node](#enode)
-[Type](#etype)
-[UnknownType](#eunknowntype)
+[Statement](#estatement)
+[DefaultStatement](#edefaultstatement)
### Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
+Inherited Relationships
-[DFG](#NodeDFG)
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## ObjectType
-**Labels**:[Node](#enode)
-[Type](#etype)
-[ObjectType](#eobjecttype)
+### Properties
+Inherited Properties
+code : String
-### Children
-[NumericType](#enumerictype)
-[StringType](#estringtype)
+argumentIndex : int
-### Relationships
-[GENERICS](#ObjectTypeGENERICS)
+file : String
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+isImplicit : boolean
-[SUPER_TYPE](#TypeSUPER_TYPE)
+fullName : String
-[DFG](#NodeDFG)
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## SynchronizedStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[SynchronizedStatement](#esynchronizedstatement)
+
+### Relationships
+[EXPRESSION](#SynchronizedStatementEXPRESSION)
+[BLOCK](#SynchronizedStatementBLOCK)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### GENERICS
+#### EXPRESSION
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer
+SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer
```
-#### RECORD_DECLARATION
+#### BLOCK
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer
+SynchronizedStatement--"BLOCK¹"-->SynchronizedStatementBLOCK[Block]:::outer
```
-## NumericType
-**Labels**:[Node](#enode)
-[Type](#etype)
-[ObjectType](#eobjecttype)
-[NumericType](#enumerictype)
+### Properties
+Inherited Properties
+code : String
-### Children
-[IntegerType](#eintegertype)
-[FloatingPointType](#efloatingpointtype)
-[BooleanType](#ebooleantype)
+argumentIndex : int
-### Relationships
-[GENERICS](#ObjectTypeGENERICS)
+file : String
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+isImplicit : boolean
-[SUPER_TYPE](#TypeSUPER_TYPE)
+fullName : String
-[DFG](#NodeDFG)
+localName : String
-[EOG](#NodeEOG)
+name : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+nameDelimiter : String
-[AST](#NodeAST)
+comment : String
-[SCOPE](#NodeSCOPE)
+artifact : String
-[TYPEDEFS](#NodeTYPEDEFS)
+startLine : int
-## IntegerType
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## TryStatement
**Labels**:[Node](#enode)
-[Type](#etype)
-[ObjectType](#eobjecttype)
-[NumericType](#enumerictype)
-[IntegerType](#eintegertype)
+[Statement](#estatement)
+[TryStatement](#etrystatement)
### Relationships
-[GENERICS](#ObjectTypeGENERICS)
+[RESOURCES](#TryStatementRESOURCES)
+[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK)
+[TRY_BLOCK](#TryStatementTRY_BLOCK)
+[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES)
+Inherited Relationships
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+[LOCALS](#StatementLOCALS)
-[SUPER_TYPE](#TypeSUPER_TYPE)
+[EOG](#NodeEOG)
-[DFG](#NodeDFG)
+[CDG](#NodeCDG)
-[EOG](#NodeEOG)
+[DFG](#NodeDFG)
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## FloatingPointType
-**Labels**:[Node](#enode)
-[Type](#etype)
-[ObjectType](#eobjecttype)
-[NumericType](#enumerictype)
-[FloatingPointType](#efloatingpointtype)
+#### RESOURCES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer
+```
+#### FINALLY_BLOCK
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[Block]:::outer
+```
+#### TRY_BLOCK
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[Block]:::outer
+```
+#### CATCH_CLAUSES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer
+```
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[GENERICS](#ObjectTypeGENERICS)
+argumentIndex : int
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+file : String
-[SUPER_TYPE](#TypeSUPER_TYPE)
+isImplicit : boolean
-[DFG](#NodeDFG)
+fullName : String
-[EOG](#NodeEOG)
+localName : String
-[ANNOTATIONS](#NodeANNOTATIONS)
+name : String
-[AST](#NodeAST)
+nameDelimiter : String
-[SCOPE](#NodeSCOPE)
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ForEachStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[ForEachStatement](#eforeachstatement)
+
+### Relationships
+[ITERABLE](#ForEachStatementITERABLE)
+[STATEMENT](#ForEachStatementSTATEMENT)
+[VARIABLE](#ForEachStatementVARIABLE)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### ITERABLE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer
+```
+#### STATEMENT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer
+```
+#### VARIABLE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## LabelStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[LabelStatement](#elabelstatement)
+
+### Relationships
+[SUB_STATEMENT](#LabelStatementSUB_STATEMENT)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### SUB_STATEMENT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer
+```
+### Properties
+label : String
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## BreakStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[BreakStatement](#ebreakstatement)
+
+### Relationships
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+label : String
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## DeclarationStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[DeclarationStatement](#edeclarationstatement)
+
+### Relationships
+[DECLARATIONS](#DeclarationStatementDECLARATIONS)
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### DECLARATIONS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## EmptyStatement
+**Labels**:[Node](#enode)
+[Statement](#estatement)
+[EmptyStatement](#eemptystatement)
+
+### Relationships
+Inherited Relationships
+
+[LOCALS](#StatementLOCALS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## Declaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+
+### Children
+[ValueDeclaration](#evaluedeclaration)
+[TemplateDeclaration](#etemplatedeclaration)
+[RecordDeclaration](#erecorddeclaration)
+[TypedefDeclaration](#etypedefdeclaration)
+[NamespaceDeclaration](#enamespacedeclaration)
+[DeclarationSequence](#edeclarationsequence)
+[TranslationUnitDeclaration](#etranslationunitdeclaration)
+[UsingDeclaration](#eusingdeclaration)
+[IncludeDeclaration](#eincludedeclaration)
+
+### Relationships
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ValueDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+
+### Children
+[VariableDeclaration](#evariabledeclaration)
+[ProblemDeclaration](#eproblemdeclaration)
+[EnumConstantDeclaration](#eenumconstantdeclaration)
+[FunctionDeclaration](#efunctiondeclaration)
+[TypeParameterDeclaration](#etypeparameterdeclaration)
+[ParameterDeclaration](#eparameterdeclaration)
+
+### Relationships
+[ALIASES](#ValueDeclarationALIASES)
+[TYPE](#ValueDeclarationTYPE)
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+[USAGE](#ValueDeclarationUSAGE)
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### ALIASES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ValueDeclaration--"ALIASES*"-->ValueDeclarationALIASES[Node]:::outer
+```
+#### TYPE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer
+```
+#### ASSIGNED_TYPES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ValueDeclaration--"ASSIGNED_TYPES*"-->ValueDeclarationASSIGNED_TYPES[Type]:::outer
+```
+#### USAGE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[Reference]:::outer
+```
+#### TYPE_OBSERVERS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ValueDeclaration--"TYPE_OBSERVERS*"-->ValueDeclarationTYPE_OBSERVERS[Node]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## VariableDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[VariableDeclaration](#evariabledeclaration)
+
+### Children
+[TupleDeclaration](#etupledeclaration)
+[FieldDeclaration](#efielddeclaration)
+
+### Relationships
+[INITIALIZER](#VariableDeclarationINITIALIZER)
+[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS)
+Inherited Relationships
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### INITIALIZER
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer
+```
+#### TEMPLATE_PARAMETERS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer
+```
+### Properties
+isImplicitInitializerAllowed : boolean
+
+isArray : boolean
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## TupleDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[VariableDeclaration](#evariabledeclaration)
+[TupleDeclaration](#etupledeclaration)
+
+### Relationships
+[ELEMENTS](#TupleDeclarationELEMENTS)
+Inherited Relationships
+
+[INITIALIZER](#VariableDeclarationINITIALIZER)
+
+[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS)
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### ELEMENTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TupleDeclaration--"ELEMENTS*"-->TupleDeclarationELEMENTS[VariableDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+isImplicitInitializerAllowed : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+isArray : boolean
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## FieldDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[VariableDeclaration](#evariabledeclaration)
+[FieldDeclaration](#efielddeclaration)
+
+### Relationships
+[DEFINES](#FieldDeclarationDEFINES)
+Inherited Relationships
+
+[INITIALIZER](#VariableDeclarationINITIALIZER)
+
+[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS)
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### DEFINES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer
+```
+### Properties
+modifiers : List
+
+isDefinition : boolean
+
+Inherited Properties
+code : String
+
+file : String
+
+isInferred : boolean
+
+argumentIndex : int
+
+isImplicit : boolean
+
+isImplicitInitializerAllowed : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+isArray : boolean
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+
+
+## ProblemDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[ProblemDeclaration](#eproblemdeclaration)
+
+### Relationships
+Inherited Relationships
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+problem : String
+
+problemType : ProblemType
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## EnumConstantDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[EnumConstantDeclaration](#eenumconstantdeclaration)
+
+### Relationships
+[INITIALIZER](#EnumConstantDeclarationINITIALIZER)
+Inherited Relationships
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### INITIALIZER
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## FunctionDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[FunctionDeclaration](#efunctiondeclaration)
+
+### Children
+[MethodDeclaration](#emethoddeclaration)
+
+### Relationships
+[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
+[OVERRIDES](#FunctionDeclarationOVERRIDES)
+[BODY](#FunctionDeclarationBODY)
+[RECORDS](#FunctionDeclarationRECORDS)
+[DEFINES](#FunctionDeclarationDEFINES)
+[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
+[PARAMETERS](#FunctionDeclarationPARAMETERS)
+Inherited Relationships
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### THROWS_TYPES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer
+```
+#### OVERRIDES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer
+```
+#### BODY
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer
+```
+#### RECORDS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer
+```
+#### DEFINES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer
+```
+#### RETURN_TYPES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer
+```
+#### PARAMETERS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParameterDeclaration]:::outer
+```
+### Properties
+isDefinition : boolean
+
+Inherited Properties
+code : String
+
+file : String
+
+isInferred : boolean
+
+argumentIndex : int
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+
+
+## MethodDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[FunctionDeclaration](#efunctiondeclaration)
+[MethodDeclaration](#emethoddeclaration)
+
+### Children
+[ConstructorDeclaration](#econstructordeclaration)
+
+### Relationships
+[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION)
+[RECEIVER](#MethodDeclarationRECEIVER)
+Inherited Relationships
+
+[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
+
+[OVERRIDES](#FunctionDeclarationOVERRIDES)
+
+[BODY](#FunctionDeclarationBODY)
+
+[RECORDS](#FunctionDeclarationRECORDS)
+
+[DEFINES](#FunctionDeclarationDEFINES)
+
+[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
+
+[PARAMETERS](#FunctionDeclarationPARAMETERS)
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### RECORD_DECLARATION
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer
+```
+#### RECEIVER
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer
+```
+### Properties
+isStatic : boolean
+
+Inherited Properties
+code : String
+
+file : String
+
+isInferred : boolean
+
+isDefinition : boolean
+
+argumentIndex : int
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+
+
+## ConstructorDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[FunctionDeclaration](#efunctiondeclaration)
+[MethodDeclaration](#emethoddeclaration)
+[ConstructorDeclaration](#econstructordeclaration)
+
+### Relationships
+Inherited Relationships
+
+[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION)
+
+[RECEIVER](#MethodDeclarationRECEIVER)
+
+[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
+
+[OVERRIDES](#FunctionDeclarationOVERRIDES)
+
+[BODY](#FunctionDeclarationBODY)
+
+[RECORDS](#FunctionDeclarationRECORDS)
+
+[DEFINES](#FunctionDeclarationDEFINES)
+
+[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
+
+[PARAMETERS](#FunctionDeclarationPARAMETERS)
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+isStatic : boolean
+
+code : String
+
+file : String
+
+isInferred : boolean
+
+isDefinition : boolean
+
+argumentIndex : int
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+
+
+## TypeParameterDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[TypeParameterDeclaration](#etypeparameterdeclaration)
+
+### Relationships
+[DEFAULT](#TypeParameterDeclarationDEFAULT)
+Inherited Relationships
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### DEFAULT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TypeParameterDeclaration--"DEFAULT¹"-->TypeParameterDeclarationDEFAULT[Type]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ParameterDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[ValueDeclaration](#evaluedeclaration)
+[ParameterDeclaration](#eparameterdeclaration)
+
+### Relationships
+[DEFAULT](#ParameterDeclarationDEFAULT)
+Inherited Relationships
+
+[ALIASES](#ValueDeclarationALIASES)
+
+[TYPE](#ValueDeclarationTYPE)
+
+[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES)
+
+[USAGE](#ValueDeclarationUSAGE)
+
+[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### DEFAULT
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ParameterDeclaration--"DEFAULT¹"-->ParameterDeclarationDEFAULT[Expression]:::outer
+```
+### Properties
+isVariadic : boolean
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## TemplateDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[TemplateDeclaration](#etemplatedeclaration)
+
+### Children
+[RecordTemplateDeclaration](#erecordtemplatedeclaration)
+[FunctionTemplateDeclaration](#efunctiontemplatedeclaration)
+
+### Relationships
+[PARAMETERS](#TemplateDeclarationPARAMETERS)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### PARAMETERS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## RecordTemplateDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[TemplateDeclaration](#etemplatedeclaration)
+[RecordTemplateDeclaration](#erecordtemplatedeclaration)
+
+### Relationships
+[REALIZATION](#RecordTemplateDeclarationREALIZATION)
+Inherited Relationships
+
+[PARAMETERS](#TemplateDeclarationPARAMETERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### REALIZATION
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordTemplateDeclaration--"REALIZATION*"-->RecordTemplateDeclarationREALIZATION[RecordDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## FunctionTemplateDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[TemplateDeclaration](#etemplatedeclaration)
+[FunctionTemplateDeclaration](#efunctiontemplatedeclaration)
+
+### Relationships
+[REALIZATION](#FunctionTemplateDeclarationREALIZATION)
+Inherited Relationships
+
+[PARAMETERS](#TemplateDeclarationPARAMETERS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### REALIZATION
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## RecordDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[RecordDeclaration](#erecorddeclaration)
+
+### Children
+[EnumDeclaration](#eenumdeclaration)
+
+### Relationships
+[IMPORTS](#RecordDeclarationIMPORTS)
+[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS)
+[FIELDS](#RecordDeclarationFIELDS)
+[TEMPLATES](#RecordDeclarationTEMPLATES)
+[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS)
+[RECORDS](#RecordDeclarationRECORDS)
+[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS)
+[STATEMENTS](#RecordDeclarationSTATEMENTS)
+[METHODS](#RecordDeclarationMETHODS)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### IMPORTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer
+```
+#### CONSTRUCTORS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer
+```
+#### FIELDS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer
+```
+#### TEMPLATES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer
+```
+#### STATIC_IMPORTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer
+```
+#### RECORDS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer
+```
+#### SUPER_TYPE_DECLARATIONS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer
+```
+#### STATEMENTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer
+```
+#### METHODS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer
+```
+### Properties
+kind : String
+
+importStatements : List
+
+staticImportStatements : List
+
+Inherited Properties
+code : String
+
+file : String
+
+isInferred : boolean
+
+argumentIndex : int
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+
+
+## EnumDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[RecordDeclaration](#erecorddeclaration)
+[EnumDeclaration](#eenumdeclaration)
+
+### Relationships
+[ENTRIES](#EnumDeclarationENTRIES)
+Inherited Relationships
+
+[IMPORTS](#RecordDeclarationIMPORTS)
+
+[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS)
+
+[FIELDS](#RecordDeclarationFIELDS)
+
+[TEMPLATES](#RecordDeclarationTEMPLATES)
+
+[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS)
+
+[RECORDS](#RecordDeclarationRECORDS)
+
+[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS)
+
+[STATEMENTS](#RecordDeclarationSTATEMENTS)
+
+[METHODS](#RecordDeclarationMETHODS)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### ENTRIES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+file : String
+
+isInferred : boolean
+
+kind : String
+
+argumentIndex : int
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+importStatements : List
+
+staticImportStatements : List
+
+
+
+## TypedefDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[TypedefDeclaration](#etypedefdeclaration)
+
+### Relationships
+[TYPE](#TypedefDeclarationTYPE)
+[ALIAS](#TypedefDeclarationALIAS)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### TYPE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer
+```
+#### ALIAS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## NamespaceDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[NamespaceDeclaration](#enamespacedeclaration)
+
+### Relationships
+[DECLARATIONS](#NamespaceDeclarationDECLARATIONS)
+[STATEMENTS](#NamespaceDeclarationSTATEMENTS)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### DECLARATIONS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer
+```
+#### STATEMENTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer
+```
+### Properties
+path : String
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## DeclarationSequence
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[DeclarationSequence](#edeclarationsequence)
+
+### Relationships
+[CHILDREN](#DeclarationSequenceCHILDREN)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### CHILDREN
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## TranslationUnitDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[TranslationUnitDeclaration](#etranslationunitdeclaration)
+
+### Relationships
+[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS)
+[NAMESPACES](#TranslationUnitDeclarationNAMESPACES)
+[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS)
+[INCLUDES](#TranslationUnitDeclarationINCLUDES)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### DECLARATIONS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer
+```
+#### NAMESPACES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer
+```
+#### STATEMENTS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer
+```
+#### INCLUDES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## UsingDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[UsingDeclaration](#eusingdeclaration)
+
+### Relationships
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+qualifiedName : String
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## IncludeDeclaration
+**Labels**:[Node](#enode)
+[Declaration](#edeclaration)
+[IncludeDeclaration](#eincludedeclaration)
+
+### Relationships
+[INCLUDES](#IncludeDeclarationINCLUDES)
+[PROBLEMS](#IncludeDeclarationPROBLEMS)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### INCLUDES
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer
+```
+#### PROBLEMS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer
+```
+### Properties
+filename : String
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## Type
+**Labels**:[Node](#enode)
+[Type](#etype)
+
+### Children
+[ProblemType](#eproblemtype)
+[UnknownType](#eunknowntype)
+[ObjectType](#eobjecttype)
+[ParameterizedType](#eparameterizedtype)
+[PointerType](#epointertype)
+[AutoType](#eautotype)
+[FunctionPointerType](#efunctionpointertype)
+[TupleType](#etupletype)
+[IncompleteType](#eincompletetype)
+[ReferenceType](#ereferencetype)
+[FunctionType](#efunctiontype)
+
+### Relationships
+[SUPER_TYPE](#TypeSUPER_TYPE)
+Inherited Relationships
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### SUPER_TYPE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer
+```
+### Properties
+isPrimitive : boolean
+
+typeOrigin : Origin
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
+## ProblemType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ProblemType](#eproblemtype)
+
+### Relationships
+Inherited Relationships
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## UnknownType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[UnknownType](#eunknowntype)
+
+### Relationships
+Inherited Relationships
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+typeOrigin : Origin
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+
+
+## ObjectType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ObjectType](#eobjecttype)
+
+### Children
+[NumericType](#enumerictype)
+[StringType](#estringtype)
+
+### Relationships
+[GENERICS](#ObjectTypeGENERICS)
+[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+Inherited Relationships
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### GENERICS
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer
+```
+#### RECORD_DECLARATION
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer
+```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## NumericType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ObjectType](#eobjecttype)
+[NumericType](#enumerictype)
+
+### Children
+[IntegerType](#eintegertype)
+[FloatingPointType](#efloatingpointtype)
+[BooleanType](#ebooleantype)
+
+### Relationships
+Inherited Relationships
+
+[GENERICS](#ObjectTypeGENERICS)
+
+[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+modifier : Modifier
+
+bitWidth : Integer
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## IntegerType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ObjectType](#eobjecttype)
+[NumericType](#enumerictype)
+[IntegerType](#eintegertype)
+
+### Relationships
+Inherited Relationships
+
+[GENERICS](#ObjectTypeGENERICS)
+
+[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+modifier : Modifier
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+bitWidth : Integer
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## FloatingPointType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ObjectType](#eobjecttype)
+[NumericType](#enumerictype)
+[FloatingPointType](#efloatingpointtype)
+
+### Relationships
+Inherited Relationships
+
+[GENERICS](#ObjectTypeGENERICS)
+
+[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+modifier : Modifier
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+bitWidth : Integer
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## BooleanType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ObjectType](#eobjecttype)
+[NumericType](#enumerictype)
+[BooleanType](#ebooleantype)
+
+### Relationships
+Inherited Relationships
+
+[GENERICS](#ObjectTypeGENERICS)
+
+[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+modifier : Modifier
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+bitWidth : Integer
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## StringType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ObjectType](#eobjecttype)
+[StringType](#estringtype)
+
+### Relationships
+Inherited Relationships
+
+[GENERICS](#ObjectTypeGENERICS)
+
+[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## ParameterizedType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[ParameterizedType](#eparameterizedtype)
+
+### Relationships
+Inherited Relationships
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
+## PointerType
+**Labels**:[Node](#enode)
+[Type](#etype)
+[PointerType](#epointertype)
+
+### Relationships
+[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE)
+Inherited Relationships
+
+[SUPER_TYPE](#TypeSUPER_TYPE)
+
+[EOG](#NodeEOG)
+
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
+[ANNOTATIONS](#NodeANNOTATIONS)
+
+[PDG](#NodePDG)
+
+[AST](#NodeAST)
+
+[SCOPE](#NodeSCOPE)
+
+
+
+#### ELEMENT_TYPE
+```mermaid
+flowchart LR
+ classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
+PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer
+```
+### Properties
+pointerOrigin : PointerOrigin
+
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
-[TYPEDEFS](#NodeTYPEDEFS)
+nameDelimiter : String
-## BooleanType
-**Labels**:[Node](#enode)
-[Type](#etype)
-[ObjectType](#eobjecttype)
-[NumericType](#enumerictype)
-[BooleanType](#ebooleantype)
+comment : String
-### Relationships
-[GENERICS](#ObjectTypeGENERICS)
+artifact : String
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+startLine : int
-[SUPER_TYPE](#TypeSUPER_TYPE)
+endLine : int
-[DFG](#NodeDFG)
+startColumn : int
-[EOG](#NodeEOG)
+endColumn : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+isPrimitive : boolean
-[AST](#NodeAST)
+isInferred : boolean
-[SCOPE](#NodeSCOPE)
+typeOrigin : Origin
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## StringType
+## AutoType
**Labels**:[Node](#enode)
[Type](#etype)
-[ObjectType](#eobjecttype)
-[StringType](#estringtype)
+[AutoType](#eautotype)
### Relationships
-[GENERICS](#ObjectTypeGENERICS)
-
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
+Inherited Relationships
[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-## ParameterizedType
-**Labels**:[Node](#enode)
-[Type](#etype)
-[ParameterizedType](#eparameterizedtype)
+### Properties
+Inherited Properties
+code : String
-### Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
+argumentIndex : int
-[DFG](#NodeDFG)
+file : String
-[EOG](#NodeEOG)
+isImplicit : boolean
-[ANNOTATIONS](#NodeANNOTATIONS)
+fullName : String
-[AST](#NodeAST)
+localName : String
-[SCOPE](#NodeSCOPE)
+name : String
-[TYPEDEFS](#NodeTYPEDEFS)
+nameDelimiter : String
-## PointerType
-**Labels**:[Node](#enode)
-[Type](#etype)
-[PointerType](#epointertype)
+comment : String
-### Relationships
-[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE)
+artifact : String
-[SUPER_TYPE](#TypeSUPER_TYPE)
+startLine : int
-[DFG](#NodeDFG)
+endLine : int
-[EOG](#NodeEOG)
+startColumn : int
-[ANNOTATIONS](#NodeANNOTATIONS)
+endColumn : int
-[AST](#NodeAST)
+isPrimitive : boolean
-[SCOPE](#NodeSCOPE)
+isInferred : boolean
-[TYPEDEFS](#NodeTYPEDEFS)
+typeOrigin : Origin
+
+
-#### ELEMENT_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer
-```
## FunctionPointerType
**Labels**:[Node](#enode)
[Type](#etype)
@@ -3094,22 +6541,26 @@ PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type[PARAMETERS](#FunctionPointerTypePARAMETERS)
-
[RETURN_TYPE](#FunctionPointerTypeRETURN_TYPE)
+Inherited Relationships
[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
#### PARAMETERS
```mermaid
@@ -3123,6 +6574,44 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
## TupleType
**Labels**:[Node](#enode)
[Type](#etype)
@@ -3130,20 +6619,25 @@ FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
## IncompleteType
**Labels**:[Node](#enode)
[Type](#etype)
[IncompleteType](#eincompletetype)
### Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
+Inherited Relationships
-[DFG](#NodeDFG)
+[SUPER_TYPE](#TypeSUPER_TYPE)
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
+
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
## ReferenceType
**Labels**:[Node](#enode)
@@ -3177,28 +6753,71 @@ TupleType--"TYPES*"-->TupleTypeTYPES[Type]:::outer
[ReferenceType](#ereferencetype)
### Relationships
-[REFERENCE](#ReferenceTypeREFERENCE)
+[ELEMENT_TYPE](#ReferenceTypeELEMENT_TYPE)
+Inherited Relationships
[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### REFERENCE
+#### ELEMENT_TYPE
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type]:::outer
+ReferenceType--"ELEMENT_TYPE¹"-->ReferenceTypeELEMENT_TYPE[Type]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
## FunctionType
**Labels**:[Node](#enode)
[Type](#etype)
@@ -3206,22 +6825,26 @@ ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type]
### Relationships
[RETURN_TYPES](#FunctionTypeRETURN_TYPES)
-
[PARAMETERS](#FunctionTypePARAMETERS)
+Inherited Relationships
[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
#### RETURN_TYPES
```mermaid
@@ -3235,24 +6858,67 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
FunctionType--"PARAMETERS*"-->FunctionTypePARAMETERS[Type]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isPrimitive : boolean
+
+isInferred : boolean
+
+typeOrigin : Origin
+
+
+
## AnnotationMember
**Labels**:[Node](#enode)
[AnnotationMember](#eannotationmember)
### Relationships
[VALUE](#AnnotationMemberVALUE)
-
-[DFG](#NodeDFG)
+Inherited Relationships
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
#### VALUE
```mermaid
@@ -3260,40 +6926,77 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
AnnotationMember--"VALUE¹"-->AnnotationMemberVALUE[Expression]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
## Component
**Labels**:[Node](#enode)
[Component](#ecomponent)
### Relationships
+[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS)
[OUTGOING_INTERACTIONS](#ComponentOUTGOING_INTERACTIONS)
+[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS)
+Inherited Relationships
-[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS)
+[EOG](#NodeEOG)
-[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS)
+[CDG](#NodeCDG)
[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
-#### OUTGOING_INTERACTIONS
+#### INCOMING_INTERACTIONS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer
+Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer
```
-#### INCOMING_INTERACTIONS
+#### OUTGOING_INTERACTIONS
```mermaid
flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer
+Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer
```
#### TRANSLATION_UNITS
```mermaid
@@ -3301,24 +7004,63 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
Component--"TRANSLATION_UNITS*"-->ComponentTRANSLATION_UNITS[TranslationUnitDeclaration]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
## Annotation
**Labels**:[Node](#enode)
[Annotation](#eannotation)
### Relationships
[MEMBERS](#AnnotationMEMBERS)
-
-[DFG](#NodeDFG)
+Inherited Relationships
[EOG](#NodeEOG)
+[CDG](#NodeCDG)
+
+[DFG](#NodeDFG)
+
[ANNOTATIONS](#NodeANNOTATIONS)
+[PDG](#NodePDG)
+
[AST](#NodeAST)
[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
+
#### MEMBERS
```mermaid
@@ -3326,3 +7068,37 @@ flowchart LR
classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
Annotation--"MEMBERS*"-->AnnotationMEMBERS[AnnotationMember]:::outer
```
+### Properties
+Inherited Properties
+code : String
+
+argumentIndex : int
+
+file : String
+
+isImplicit : boolean
+
+fullName : String
+
+localName : String
+
+name : String
+
+nameDelimiter : String
+
+comment : String
+
+artifact : String
+
+startLine : int
+
+endLine : int
+
+startColumn : int
+
+endColumn : int
+
+isInferred : boolean
+
+
+
diff --git a/docs/docs/CPG/specs/schema.md b/docs/docs/CPG/specs/schema.md
deleted file mode 100644
index 3b91b95eb8..0000000000
--- a/docs/docs/CPG/specs/schema.md
+++ /dev/null
@@ -1,10952 +0,0 @@
-# CPG Schema
-This file shows all node labels and relationships between them that are persisted from the in memory CPG to the Neo4j database. The specification is generated automatically and always up to date.
-# Node
-## Children
-[Statement](#estatement) [Declaration](#edeclaration) [Type](#etype) [AnnotationMember](#eannotationmember) [Component](#ecomponent) [Annotation](#eannotation)
-## Relationships
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### DFG
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"DFG*"-->NodeDFG[Node]:::outer
-```
-### EOG
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"EOG*"-->NodeEOG[Node]:::outer
-```
-### ANNOTATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"ANNOTATIONS*"-->NodeANNOTATIONS[Annotation]:::outer
-```
-### AST
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"AST*"-->NodeAST[Node]:::outer
-```
-### SCOPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer
-```
-### TYPEDEFS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclaration]:::outer
-```
-# Statement
-**Labels**:[Node](#enode) [Statement](#estatement)
-## Children
-[AssertStatement](#eassertstatement) [DoStatement](#edostatement) [CaseStatement](#ecasestatement) [ReturnStatement](#ereturnstatement) [Expression](#eexpression) [IfStatement](#eifstatement) [DeclarationStatement](#edeclarationstatement) [ForStatement](#eforstatement) [CatchClause](#ecatchclause) [SwitchStatement](#eswitchstatement) [GotoStatement](#egotostatement) [WhileStatement](#ewhilestatement) [BlockStatement](#ecompoundstatement) [ContinueStatement](#econtinuestatement) [DefaultStatement](#edefaultstatement) [SynchronizedStatement](#esynchronizedstatement) [TryStatement](#etrystatement) [ForEachStatement](#eforeachstatement) [LabelStatement](#elabelstatement) [BreakStatement](#ebreakstatement) [EmptyStatement](#eemptystatement)
-## Relationships
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### LOCALS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Statement--"LOCALS*"-->StatementLOCALS[VariableDeclaration]:::outer
-```
-# AssertStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [AssertStatement](#eassertstatement)
-## Relationships
-[CONDITION](#AssertStatementCONDITION)
-[MESSAGE](#AssertStatementMESSAGE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer
-```
-### MESSAGE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer
-```
-# DoStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [DoStatement](#edostatement)
-## Relationships
-[CONDITION](#DoStatementCONDITION)
-[STATEMENT](#DoStatementSTATEMENT)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DoStatement--"CONDITION¹"-->DoStatementCONDITION[Expression]:::outer
-```
-### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DoStatement--"STATEMENT¹"-->DoStatementSTATEMENT[Statement]:::outer
-```
-# CaseStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [CaseStatement](#ecasestatement)
-## Relationships
-[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CASE_EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer
-```
-# ReturnStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [ReturnStatement](#ereturnstatement)
-## Relationships
-[RETURN_VALUES](#ReturnStatementRETURN_VALUES)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### RETURN_VALUES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer
-```
-# Expression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression)
-## Children
-[NewExpression](#enewexpression) [LambdaExpression](#elambdaexpression) [UnaryOperator](#eunaryoperator) [ArrayRangeExpression](#earrayrangeexpression) [CallExpression](#ecallexpression) [DesignatedInitializerExpression](#edesignatedinitializerexpression) [KeyValueExpression](#ekeyvalueexpression) [AssignExpression](#eassignexpression) [CastExpression](#ecastexpression) [NewArrayExpression](#earraycreationexpression) [SubscriptionExpression](#earraysubscriptionexpression) [TypeExpression](#etypeexpression) [BinaryOperator](#ebinaryoperator) [ConditionalExpression](#econditionalexpression) [Reference](#edeclaredreferenceexpression) [InitializerListExpression](#einitializerlistexpression) [DeleteExpression](#edeleteexpression) [BlockStatementExpression](#ecompoundstatementexpression) [ProblemExpression](#eproblemexpression) [Literal](#eliteral) [TypeIdExpression](#etypeidexpression) [ExpressionList](#eexpressionlist)
-## Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### POSSIBLE_SUB_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Expression--"POSSIBLE_SUB_TYPES*"-->ExpressionPOSSIBLE_SUB_TYPES[Type]:::outer
-```
-### TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer
-```
-# NewExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [NewExpression](#enewexpression)
-## Relationships
-[INITIALIZER](#NewExpressionINITIALIZER)
-[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer
-```
-### TEMPLATE_PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer
-```
-# LambdaExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [LambdaExpression](#elambdaexpression)
-## Relationships
-[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES)
-[FUNCTION](#LambdaExpressionFUNCTION)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### MUTABLE_VARIABLES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer
-```
-### FUNCTION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer
-```
-# UnaryOperator
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [UnaryOperator](#eunaryoperator)
-## Relationships
-[INPUT](#UnaryOperatorINPUT)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INPUT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer
-```
-# ArrayRangeExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ArrayRangeExpression](#earrayrangeexpression)
-## Relationships
-[CEILING](#ArrayRangeExpressionCEILING)
-[STEP](#ArrayRangeExpressionSTEP)
-[FLOOR](#ArrayRangeExpressionFLOOR)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CEILING
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ArrayRangeExpression--"CEILING¹"-->ArrayRangeExpressionCEILING[Expression]:::outer
-```
-### STEP
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ArrayRangeExpression--"STEP¹"-->ArrayRangeExpressionSTEP[Expression]:::outer
-```
-### FLOOR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ArrayRangeExpression--"FLOOR¹"-->ArrayRangeExpressionFLOOR[Expression]:::outer
-```
-# CallExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression)
-## Children
-[ConstructorCallExpression](#eexplicitconstructorinvocation) [ConstructExpression](#econstructexpression) [MemberCallExpression](#emembercallexpression)
-## Relationships
-[CALLEE](#CallExpressionCALLEE)
-[INVOKES](#CallExpressionINVOKES)
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
-[ARGUMENTS](#CallExpressionARGUMENTS)
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CALLEE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer
-```
-### INVOKES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer
-```
-### TEMPLATE_INSTANTIATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer
-```
-### ARGUMENTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer
-```
-### TEMPLATE_PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer
-```
-# ConstructorCallExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [ConstructorCallExpression](#eexplicitconstructorinvocation)
-## Relationships
-[CALLEE](#CallExpressionCALLEE)
-[INVOKES](#CallExpressionINVOKES)
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
-[ARGUMENTS](#CallExpressionARGUMENTS)
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ConstructExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [ConstructExpression](#econstructexpression)
-## Relationships
-[INSTANTIATES](#ConstructExpressionINSTANTIATES)
-[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR)
-[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS)
-[CALLEE](#CallExpressionCALLEE)
-[INVOKES](#CallExpressionINVOKES)
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
-[ARGUMENTS](#CallExpressionARGUMENTS)
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INSTANTIATES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer
-```
-### CONSTRUCTOR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer
-```
-### ANOYMOUS_CLASS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer
-```
-# MemberCallExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [MemberCallExpression](#emembercallexpression)
-## Relationships
-[CALLEE](#CallExpressionCALLEE)
-[INVOKES](#CallExpressionINVOKES)
-[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION)
-[ARGUMENTS](#CallExpressionARGUMENTS)
-[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# DesignatedInitializerExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DesignatedInitializerExpression](#edesignatedinitializerexpression)
-## Relationships
-[LHS](#DesignatedInitializerExpressionLHS)
-[RHS](#DesignatedInitializerExpressionRHS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### LHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DesignatedInitializerExpression--"LHS*"-->DesignatedInitializerExpressionLHS[Expression]:::outer
-```
-### RHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DesignatedInitializerExpression--"RHS¹"-->DesignatedInitializerExpressionRHS[Expression]:::outer
-```
-# KeyValueExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [KeyValueExpression](#ekeyvalueexpression)
-## Relationships
-[VALUE](#KeyValueExpressionVALUE)
-[KEY](#KeyValueExpressionKEY)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### VALUE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer
-```
-### KEY
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer
-```
-# AssignExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [AssignExpression](#eassignexpression)
-## Relationships
-[DECLARATIONS](#AssignExpressionDECLARATIONS)
-[LHS](#AssignExpressionLHS)
-[RHS](#AssignExpressionRHS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer
-```
-### LHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer
-```
-### RHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer
-```
-# CastExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CastExpression](#ecastexpression)
-## Relationships
-[CAST_TYPE](#CastExpressionCAST_TYPE)
-[EXPRESSION](#CastExpressionEXPRESSION)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CAST_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer
-```
-### EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer
-```
-# NewArrayExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [NewArrayExpression](#earraycreationexpression)
-## Relationships
-[INITIALIZER](#NewArrayExpressionINITIALIZER)
-[DIMENSIONS](#NewArrayExpressionDIMENSIONS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewArrayExpression--"INITIALIZER¹"-->NewArrayExpressionINITIALIZER[Expression]:::outer
-```
-### DIMENSIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NewArrayExpression--"DIMENSIONS*"-->NewArrayExpressionDIMENSIONS[Expression]:::outer
-```
-# SubscriptionExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [SubscriptionExpression](#earraysubscriptionexpression)
-## Relationships
-[ARRAY_EXPRESSION](#SubscriptionExpressionARRAY_EXPRESSION)
-[SUBSCRIPT_EXPRESSION](#SubscriptionExpressionSUBSCRIPT_EXPRESSION)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### ARRAY_EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SubscriptionExpression--"ARRAY_EXPRESSION¹"-->SubscriptionExpressionARRAY_EXPRESSION[Expression]:::outer
-```
-### SUBSCRIPT_EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SubscriptionExpression--"SUBSCRIPT_EXPRESSION¹"-->SubscriptionExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer
-```
-# TypeExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [TypeExpression](#etypeexpression)
-## Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# BinaryOperator
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [BinaryOperator](#ebinaryoperator)
-## Relationships
-[LHS](#BinaryOperatorLHS)
-[RHS](#BinaryOperatorRHS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### LHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer
-```
-### RHS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer
-```
-# ConditionalExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ConditionalExpression](#econditionalexpression)
-## Relationships
-[ELSE_EXPR](#ConditionalExpressionELSE_EXPR)
-[THEN_EXPR](#ConditionalExpressionTHEN_EXPR)
-[CONDITION](#ConditionalExpressionCONDITION)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### ELSE_EXPR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConditionalExpression--"ELSE_EXPR¹"-->ConditionalExpressionELSE_EXPR[Expression]:::outer
-```
-### THEN_EXPR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConditionalExpression--"THEN_EXPR¹"-->ConditionalExpressionTHEN_EXPR[Expression]:::outer
-```
-### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer
-```
-# Reference
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Reference](#edeclaredreferenceexpression)
-## Children
-[MemberExpression](#ememberexpression)
-## Relationships
-[REFERS_TO](#ReferenceREFERS_TO)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### REFERS_TO
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Reference--"REFERS_TO¹"-->ReferenceREFERS_TO[Declaration]:::outer
-```
-# MemberExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Reference](#edeclaredreferenceexpression) [MemberExpression](#ememberexpression)
-## Relationships
-[BASE](#MemberExpressionBASE)
-[REFERS_TO](#ReferenceREFERS_TO)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### BASE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer
-```
-# InitializerListExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [InitializerListExpression](#einitializerlistexpression)
-## Relationships
-[INITIALIZERS](#InitializerListExpressionINITIALIZERS)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer
-```
-# DeleteExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DeleteExpression](#edeleteexpression)
-## Relationships
-[OPERAND](#DeleteExpressionOPERAND)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### OPERAND
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer
-```
-# BlockStatementExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [BlockStatementExpression](#ecompoundstatementexpression)
-## Relationships
-[STATEMENT](#BlockStatementExpressionSTATEMENT)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BlockStatementExpression--"STATEMENT¹"-->BlockStatementExpressionSTATEMENT[Statement]:::outer
-```
-# ProblemExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ProblemExpression](#eproblemexpression)
-## Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# Literal
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Literal](#eliteral)
-## Relationships
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# TypeIdExpression
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [TypeIdExpression](#etypeidexpression)
-## Relationships
-[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### REFERENCED_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer
-```
-# ExpressionList
-**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ExpressionList](#eexpressionlist)
-## Relationships
-[SUBEXPR](#ExpressionListSUBEXPR)
-[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES)
-[TYPE](#ExpressionTYPE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### SUBEXPR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer
-```
-# IfStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [IfStatement](#eifstatement)
-## Relationships
-[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION)
-[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT)
-[THEN_STATEMENT](#IfStatementTHEN_STATEMENT)
-[CONDITION](#IfStatementCONDITION)
-[ELSE_STATEMENT](#IfStatementELSE_STATEMENT)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CONDITION_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer
-```
-### INITIALIZER_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer
-```
-### THEN_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer
-```
-### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer
-```
-### ELSE_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer
-```
-# DeclarationStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [DeclarationStatement](#edeclarationstatement)
-## Children
-[ASMDeclarationStatement](#easmdeclarationstatement)
-## Relationships
-[DECLARATIONS](#DeclarationStatementDECLARATIONS)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer
-```
-# ASMDeclarationStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [DeclarationStatement](#edeclarationstatement) [ASMDeclarationStatement](#easmdeclarationstatement)
-## Relationships
-[DECLARATIONS](#DeclarationStatementDECLARATIONS)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ForStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [ForStatement](#eforstatement)
-## Relationships
-[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION)
-[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT)
-[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT)
-[CONDITION](#ForStatementCONDITION)
-[STATEMENT](#ForStatementSTATEMENT)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CONDITION_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer
-```
-### INITIALIZER_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer
-```
-### ITERATION_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer
-```
-### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer
-```
-### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer
-```
-# CatchClause
-**Labels**:[Node](#enode) [Statement](#estatement) [CatchClause](#ecatchclause)
-## Relationships
-[PARAMETER](#CatchClausePARAMETER)
-[BODY](#CatchClauseBODY)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### PARAMETER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer
-```
-### BODY
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-CatchClause--"BODY¹"-->CatchClauseBODY[BlockStatement]:::outer
-```
-# SwitchStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [SwitchStatement](#eswitchstatement)
-## Relationships
-[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT)
-[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION)
-[STATEMENT](#SwitchStatementSTATEMENT)
-[SELECTOR](#SwitchStatementSELECTOR)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZER_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer
-```
-### SELECTOR_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer
-```
-### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer
-```
-### SELECTOR
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer
-```
-# GotoStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [GotoStatement](#egotostatement)
-## Relationships
-[TARGET_LABEL](#GotoStatementTARGET_LABEL)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### TARGET_LABEL
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer
-```
-# WhileStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [WhileStatement](#ewhilestatement)
-## Relationships
-[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION)
-[CONDITION](#WhileStatementCONDITION)
-[STATEMENT](#WhileStatementSTATEMENT)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CONDITION_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer
-```
-### CONDITION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer
-```
-### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer
-```
-# BlockStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [BlockStatement](#ecompoundstatement)
-## Relationships
-[STATEMENTS](#BlockStatementSTATEMENTS)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### STATEMENTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-BlockStatement--"STATEMENTS*"-->BlockStatementSTATEMENTS[Statement]:::outer
-```
-# ContinueStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [ContinueStatement](#econtinuestatement)
-## Relationships
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# DefaultStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [DefaultStatement](#edefaultstatement)
-## Relationships
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# SynchronizedStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [SynchronizedStatement](#esynchronizedstatement)
-## Relationships
-[BLOCK_STATEMENT](#SynchronizedStatementBLOCK_STATEMENT)
-[EXPRESSION](#SynchronizedStatementEXPRESSION)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### BLOCK_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SynchronizedStatement--"BLOCK_STATEMENT¹"-->SynchronizedStatementBLOCK_STATEMENT[BlockStatement]:::outer
-```
-### EXPRESSION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer
-```
-# TryStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [TryStatement](#etrystatement)
-## Relationships
-[RESOURCES](#TryStatementRESOURCES)
-[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK)
-[TRY_BLOCK](#TryStatementTRY_BLOCK)
-[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### RESOURCES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer
-```
-### FINALLY_BLOCK
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[BlockStatement]:::outer
-```
-### TRY_BLOCK
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[BlockStatement]:::outer
-```
-### CATCH_CLAUSES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer
-```
-# ForEachStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [ForEachStatement](#eforeachstatement)
-## Relationships
-[STATEMENT](#ForEachStatementSTATEMENT)
-[VARIABLE](#ForEachStatementVARIABLE)
-[ITERABLE](#ForEachStatementITERABLE)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer
-```
-### VARIABLE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer
-```
-### ITERABLE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer
-```
-# LabelStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [LabelStatement](#elabelstatement)
-## Relationships
-[SUB_STATEMENT](#LabelStatementSUB_STATEMENT)
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### SUB_STATEMENT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer
-```
-# BreakStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [BreakStatement](#ebreakstatement)
-## Relationships
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# EmptyStatement
-**Labels**:[Node](#enode) [Statement](#estatement) [EmptyStatement](#eemptystatement)
-## Relationships
-[LOCALS](#StatementLOCALS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# Declaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration)
-## Children
-[ValueDeclaration](#evaluedeclaration) [TemplateDeclaration](#etemplatedeclaration) [EnumDeclaration](#eenumdeclaration) [TypedefDeclaration](#etypedefdeclaration) [UsingDirective](#eusingdirective) [NamespaceDeclaration](#enamespacedeclaration) [RecordDeclaration](#erecorddeclaration) [DeclarationSequence](#edeclarationsequence) [TranslationUnitDeclaration](#etranslationunitdeclaration) [IncludeDeclaration](#eincludedeclaration)
-## Relationships
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ValueDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration)
-## Children
-[FieldDeclaration](#efielddeclaration) [VariableDeclaration](#evariabledeclaration) [ProblemDeclaration](#eproblemdeclaration) [EnumConstantDeclaration](#eenumconstantdeclaration) [FunctionDeclaration](#efunctiondeclaration) [ParameterDeclaration](#eparamvariabledeclaration) [TypeParameterDeclaration](#etypeparamdeclaration)
-## Relationships
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### POSSIBLE_SUB_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ValueDeclaration--"POSSIBLE_SUB_TYPES*"-->ValueDeclarationPOSSIBLE_SUB_TYPES[Type]:::outer
-```
-### TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer
-```
-### USAGE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[Reference]:::outer
-```
-# FieldDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FieldDeclaration](#efielddeclaration)
-## Relationships
-[INITIALIZER](#FieldDeclarationINITIALIZER)
-[DEFINES](#FieldDeclarationDEFINES)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FieldDeclaration--"INITIALIZER¹"-->FieldDeclarationINITIALIZER[Expression]:::outer
-```
-### DEFINES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer
-```
-# VariableDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [VariableDeclaration](#evariabledeclaration)
-## Relationships
-[INITIALIZER](#VariableDeclarationINITIALIZER)
-[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer
-```
-### TEMPLATE_PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer
-```
-# ProblemDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [ProblemDeclaration](#eproblemdeclaration)
-## Relationships
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# EnumConstantDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [EnumConstantDeclaration](#eenumconstantdeclaration)
-## Relationships
-[INITIALIZER](#EnumConstantDeclarationINITIALIZER)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INITIALIZER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer
-```
-# FunctionDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration)
-## Children
-[MethodDeclaration](#emethoddeclaration)
-## Relationships
-[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
-[OVERRIDES](#FunctionDeclarationOVERRIDES)
-[BODY](#FunctionDeclarationBODY)
-[RECORDS](#FunctionDeclarationRECORDS)
-[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
-[PARAMETERS](#FunctionDeclarationPARAMETERS)
-[DEFINES](#FunctionDeclarationDEFINES)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### THROWS_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer
-```
-### OVERRIDES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer
-```
-### BODY
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer
-```
-### RECORDS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer
-```
-### RETURN_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer
-```
-### PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParameterDeclaration]:::outer
-```
-### DEFINES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer
-```
-# MethodDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) [MethodDeclaration](#emethoddeclaration)
-## Children
-[ConstructorDeclaration](#econstructordeclaration)
-## Relationships
-[RECEIVER](#MethodDeclarationRECEIVER)
-[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION)
-[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
-[OVERRIDES](#FunctionDeclarationOVERRIDES)
-[BODY](#FunctionDeclarationBODY)
-[RECORDS](#FunctionDeclarationRECORDS)
-[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
-[PARAMETERS](#FunctionDeclarationPARAMETERS)
-[DEFINES](#FunctionDeclarationDEFINES)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### RECEIVER
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer
-```
-### RECORD_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer
-```
-# ConstructorDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) [MethodDeclaration](#emethoddeclaration) [ConstructorDeclaration](#econstructordeclaration)
-## Relationships
-[RECEIVER](#MethodDeclarationRECEIVER)
-[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION)
-[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES)
-[OVERRIDES](#FunctionDeclarationOVERRIDES)
-[BODY](#FunctionDeclarationBODY)
-[RECORDS](#FunctionDeclarationRECORDS)
-[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES)
-[PARAMETERS](#FunctionDeclarationPARAMETERS)
-[DEFINES](#FunctionDeclarationDEFINES)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ParameterDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [ParameterDeclaration](#eparamvariabledeclaration)
-## Relationships
-[DEFAULT](#ParameterDeclarationDEFAULT)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### DEFAULT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ParameterDeclaration--"DEFAULT¹"-->ParameterDeclarationDEFAULT[Expression]:::outer
-```
-# TypeParameterDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [TypeParameterDeclaration](#etypeparamdeclaration)
-## Relationships
-[DEFAULT](#TypeParameterDeclarationDEFAULT)
-[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES)
-[TYPE](#ValueDeclarationTYPE)
-[USAGE](#ValueDeclarationUSAGE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### DEFAULT
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypeParameterDeclaration--"DEFAULT¹"-->TypeParameterDeclarationDEFAULT[Type]:::outer
-```
-# TemplateDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration)
-## Children
-[ClassTemplateDeclaration](#eclasstemplatedeclaration) [FunctionTemplateDeclaration](#efunctiontemplatedeclaration)
-## Relationships
-[PARAMETERS](#TemplateDeclarationPARAMETERS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer
-```
-# ClassTemplateDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) [ClassTemplateDeclaration](#eclasstemplatedeclaration)
-## Relationships
-[REALIZATION](#ClassTemplateDeclarationREALIZATION)
-[PARAMETERS](#TemplateDeclarationPARAMETERS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### REALIZATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ClassTemplateDeclaration--"REALIZATION*"-->ClassTemplateDeclarationREALIZATION[RecordDeclaration]:::outer
-```
-# FunctionTemplateDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) [FunctionTemplateDeclaration](#efunctiontemplatedeclaration)
-## Relationships
-[REALIZATION](#FunctionTemplateDeclarationREALIZATION)
-[PARAMETERS](#TemplateDeclarationPARAMETERS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### REALIZATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer
-```
-# EnumDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [EnumDeclaration](#eenumdeclaration)
-## Relationships
-[ENTRIES](#EnumDeclarationENTRIES)
-[SUPER_TYPE_DECLARATIONS](#EnumDeclarationSUPER_TYPE_DECLARATIONS)
-[SUPER_TYPES](#EnumDeclarationSUPER_TYPES)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### ENTRIES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer
-```
-### SUPER_TYPE_DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumDeclaration--"SUPER_TYPE_DECLARATIONS*"-->EnumDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer
-```
-### SUPER_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-EnumDeclaration--"SUPER_TYPES*"-->EnumDeclarationSUPER_TYPES[Type]:::outer
-```
-# TypedefDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [TypedefDeclaration](#etypedefdeclaration)
-## Relationships
-[ALIAS](#TypedefDeclarationALIAS)
-[TYPE](#TypedefDeclarationTYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### ALIAS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer
-```
-### TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer
-```
-# UsingDirective
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [UsingDirective](#eusingdirective)
-## Relationships
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# NamespaceDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [NamespaceDeclaration](#enamespacedeclaration)
-## Relationships
-[STATEMENTS](#NamespaceDeclarationSTATEMENTS)
-[DECLARATIONS](#NamespaceDeclarationDECLARATIONS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### STATEMENTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer
-```
-### DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer
-```
-# RecordDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [RecordDeclaration](#erecorddeclaration)
-## Relationships
-[IMPORTS](#RecordDeclarationIMPORTS)
-[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS)
-[FIELDS](#RecordDeclarationFIELDS)
-[TEMPLATES](#RecordDeclarationTEMPLATES)
-[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS)
-[RECORDS](#RecordDeclarationRECORDS)
-[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS)
-[STATEMENTS](#RecordDeclarationSTATEMENTS)
-[METHODS](#RecordDeclarationMETHODS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### IMPORTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer
-```
-### CONSTRUCTORS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer
-```
-### FIELDS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer
-```
-### TEMPLATES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer
-```
-### STATIC_IMPORTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer
-```
-### RECORDS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer
-```
-### SUPER_TYPE_DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer
-```
-### STATEMENTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer
-```
-### METHODS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer
-```
-# DeclarationSequence
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [DeclarationSequence](#edeclarationsequence)
-## Relationships
-[CHILDREN](#DeclarationSequenceCHILDREN)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### CHILDREN
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer
-```
-# TranslationUnitDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [TranslationUnitDeclaration](#etranslationunitdeclaration)
-## Relationships
-[NAMESPACES](#TranslationUnitDeclarationNAMESPACES)
-[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS)
-[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS)
-[INCLUDES](#TranslationUnitDeclarationINCLUDES)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### NAMESPACES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer
-```
-### DECLARATIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer
-```
-### STATEMENTS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer
-```
-### INCLUDES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer
-```
-# IncludeDeclaration
-**Labels**:[Node](#enode) [Declaration](#edeclaration) [IncludeDeclaration](#eincludedeclaration)
-## Relationships
-[INCLUDES](#IncludeDeclarationINCLUDES)
-[PROBLEMS](#IncludeDeclarationPROBLEMS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### INCLUDES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer
-```
-### PROBLEMS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer
-```
-# Type
-**Labels**:[Node](#enode) [Type](#etype)
-## Children
-[UnknownType](#eunknowntype) [ObjectType](#eobjecttype) [ParameterizedType](#eparameterizedtype) [PointerType](#epointertype) [FunctionPointerType](#efunctionpointertype) [TupleType](#etupletype) [IncompleteType](#eincompletetype) [ReferenceType](#ereferencetype) [FunctionType](#efunctiontype)
-## Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### SUPER_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer
-```
-# UnknownType
-**Labels**:[Node](#enode) [Type](#etype) [UnknownType](#eunknowntype)
-## Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ObjectType
-**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype)
-## Children
-[NumericType](#enumerictype) [StringType](#estringtype)
-## Relationships
-[GENERICS](#ObjectTypeGENERICS)
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### GENERICS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer
-```
-### RECORD_DECLARATION
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer
-```
-# NumericType
-**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype)
-## Children
-[IntegerType](#eintegertype) [FloatingPointType](#efloatingpointtype) [BooleanType](#ebooleantype)
-## Relationships
-[GENERICS](#ObjectTypeGENERICS)
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# IntegerType
-**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [IntegerType](#eintegertype)
-## Relationships
-[GENERICS](#ObjectTypeGENERICS)
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# FloatingPointType
-**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [FloatingPointType](#efloatingpointtype)
-## Relationships
-[GENERICS](#ObjectTypeGENERICS)
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# BooleanType
-**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [BooleanType](#ebooleantype)
-## Relationships
-[GENERICS](#ObjectTypeGENERICS)
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# StringType
-**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [StringType](#estringtype)
-## Relationships
-[GENERICS](#ObjectTypeGENERICS)
-[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ParameterizedType
-**Labels**:[Node](#enode) [Type](#etype) [ParameterizedType](#eparameterizedtype)
-## Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# PointerType
-**Labels**:[Node](#enode) [Type](#etype) [PointerType](#epointertype)
-## Relationships
-[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### ELEMENT_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer
-```
-# FunctionPointerType
-**Labels**:[Node](#enode) [Type](#etype) [FunctionPointerType](#efunctionpointertype)
-## Relationships
-[PARAMETERS](#FunctionPointerTypePARAMETERS)
-[RETURN_TYPE](#FunctionPointerTypeRETURN_TYPE)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionPointerType--"PARAMETERS*"-->FunctionPointerTypePARAMETERS[Type]:::outer
-```
-### RETURN_TYPE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer
-```
-# TupleType
-**Labels**:[Node](#enode) [Type](#etype) [TupleType](#etupletype)
-## Relationships
-[TYPES](#TupleTypeTYPES)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-TupleType--"TYPES*"-->TupleTypeTYPES[Type]:::outer
-```
-# IncompleteType
-**Labels**:[Node](#enode) [Type](#etype) [IncompleteType](#eincompletetype)
-## Relationships
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-# ReferenceType
-**Labels**:[Node](#enode) [Type](#etype) [ReferenceType](#ereferencetype)
-## Relationships
-[REFERENCE](#ReferenceTypeREFERENCE)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### REFERENCE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type]:::outer
-```
-# FunctionType
-**Labels**:[Node](#enode) [Type](#etype) [FunctionType](#efunctiontype)
-## Relationships
-[RETURN_TYPES](#FunctionTypeRETURN_TYPES)
-[PARAMETERS](#FunctionTypePARAMETERS)
-[SUPER_TYPE](#TypeSUPER_TYPE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### RETURN_TYPES
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionType--"RETURN_TYPES*"-->FunctionTypeRETURN_TYPES[Type]:::outer
-```
-### PARAMETERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-FunctionType--"PARAMETERS*"-->FunctionTypePARAMETERS[Type]:::outer
-```
-# AnnotationMember
-**Labels**:[Node](#enode) [AnnotationMember](#eannotationmember)
-## Relationships
-[VALUE](#AnnotationMemberVALUE)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### VALUE
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-AnnotationMember--"VALUE¹"-->AnnotationMemberVALUE[Expression]:::outer
-```
-# Component
-**Labels**:[Node](#enode) [Component](#ecomponent)
-## Relationships
-[OUTGOING_INTERACTIONS](#ComponentOUTGOING_INTERACTIONS)
-[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS)
-[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### OUTGOING_INTERACTIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer
-```
-### INCOMING_INTERACTIONS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer
-```
-### TRANSLATION_UNITS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Component--"TRANSLATION_UNITS*"-->ComponentTRANSLATION_UNITS[TranslationUnitDeclaration]:::outer
-```
-# Annotation
-**Labels**:[Node](#enode) [Annotation](#eannotation)
-## Relationships
-[MEMBERS](#AnnotationMEMBERS)
-[DFG](#NodeDFG)
-[EOG](#NodeEOG)
-[ANNOTATIONS](#NodeANNOTATIONS)
-[AST](#NodeAST)
-[SCOPE](#NodeSCOPE)
-[TYPEDEFS](#NodeTYPEDEFS)
-### MEMBERS
-```mermaid
-flowchart LR
- classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;
-Annotation--"MEMBERS*"-->AnnotationMEMBERS[AnnotationMember]:::outer
-```