All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.shiftleft.codepropertygraph.generated.NodeKeys Maven / Gradle / Ivy

The newest version!
package io.shiftleft.codepropertygraph.generated;

import gremlin.scala.Key;

public class NodeKeys {

/**  */
public static final Key IS_STATIC = new Key<>("IS_STATIC");

/**  */
public static final Key PARAMETER_INDEX = new Key<>("PARAMETER_INDEX");

/**  */
public static final Key SCORE = new Key<>("SCORE");

/**  */
public static final Key ANNOTATION_FULL_NAME = new Key<>("ANNOTATION_FULL_NAME");

/**  */
public static final Key ANNOTATION_NAME = new Key<>("ANNOTATION_NAME");

/**  */
public static final Key CATEGORY = new Key<>("CATEGORY");

/**  */
public static final Key CLASS_NAME = new Key<>("CLASS_NAME");

/**  */
public static final Key CWE_LINK = new Key<>("CWE_LINK");

/**  */
public static final Key DESCRIPTION = new Key<>("DESCRIPTION");

/**  */
public static final Key EVALUATION_TYPE = new Key<>("EVALUATION_TYPE");

/**  */
public static final Key FILENAME = new Key<>("FILENAME");

/**  */
public static final Key FINGERPRINT = new Key<>("FINGERPRINT");

/**  */
public static final Key LINE_NO = new Key<>("LINE_NO");

/**  */
public static final Key LINK = new Key<>("LINK");

/**  */
public static final Key LITERALS_TO_SINK = new Key<>("LITERALS_TO_SINK");

/**  */
public static final Key METHOD_NAME = new Key<>("METHOD_NAME");

/**  */
public static final Key METHOD_SHORT_NAME = new Key<>("METHOD_SHORT_NAME");

/**  */
public static final Key NODE_ID = new Key<>("NODE_ID");

/**  */
public static final Key NODE_LABEL = new Key<>("NODE_LABEL");

/**  */
public static final Key OWASP_LINK = new Key<>("OWASP_LINK");

/**  */
public static final Key PACKAGE_NAME = new Key<>("PACKAGE_NAME");

/**  */
public static final Key PARAMETER = new Key<>("PARAMETER");

/**  */
public static final Key PATH = new Key<>("PATH");

/**  */
public static final Key PATTERN = new Key<>("PATTERN");

/**  */
public static final Key SINK_TYPE = new Key<>("SINK_TYPE");

/**  */
public static final Key SOURCE_TYPE = new Key<>("SOURCE_TYPE");

/**  */
public static final Key SPID = new Key<>("SPID");

/**  */
public static final Key SYMBOL = new Key<>("SYMBOL");

/**  */
public static final Key TITLE = new Key<>("TITLE");

/**  */
public static final Key VAR_TYPE = new Key<>("VAR_TYPE");

/**  */
public static final Key VULN_DESCR = new Key<>("VULN_DESCR");

/** A version, given as a string */
public static final Key VERSION = new Key<>("VERSION");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** Binary type signature */
public static final Key BINARY_SIGNATURE = new Key<>("BINARY_SIGNATURE");

/** Column where the code ends */
public static final Key COLUMN_NUMBER_END = new Key<>("COLUMN_NUMBER_END");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** Content of CONFIG_FILE node */
public static final Key CONTENT = new Key<>("CONTENT");

/** Deprecated */
public static final Key METHOD_INST_FULL_NAME = new Key<>("METHOD_INST_FULL_NAME");

/** Evaluation strategy for function parameters and return values. One of the values in "evaluationStrategies" */
public static final Key EVALUATION_STRATEGY = new Key<>("EVALUATION_STRATEGY");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Identifier which uniquely describes a CLOSURE_BINDING. This property is used to match captured LOCAL nodes with the corresponding CLOSURE_BINDING nodes */
public static final Key CLOSURE_BINDING_ID = new Key<>("CLOSURE_BINDING_ID");

/** Indicates that the construct (METHOD or TYPE_DECL) is external, that is, it is referenced but not defined in the code (applies both to insular parsing and to library functions where we have header files only) */
public static final Key IS_EXTERNAL = new Key<>("IS_EXTERNAL");

/** Indicates the modifier which is represented by a MODIFIER node. See modifierTypes */
public static final Key MODIFIER_TYPE = new Key<>("MODIFIER_TYPE");

/** Indicates whether a call was already resolved. If not set this means not yet resolved */
public static final Key RESOLVED = new Key<>("RESOLVED");

/** Line where the code ends */
public static final Key LINE_NUMBER_END = new Key<>("LINE_NUMBER_END");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Marks that a method has at least one mapping defined from the policies */
public static final Key HAS_MAPPING = new Key<>("HAS_MAPPING");

/** Method signature. The format is defined by the language front-end, and the backend simply compares strings to resolve function overloading, i.e. match call-sites to METHODs. In theory, consecutive integers would be valid, but in practice this should be human readable */
public static final Key SIGNATURE = new Key<>("SIGNATURE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Tag value */
public static final Key VALUE = new Key<>("VALUE");

/** The FULL_NAME of a method. Used to link CALL and METHOD nodes. It is required to have exactly one METHOD node for each METHOD_FULL_NAME */
public static final Key METHOD_FULL_NAME = new Key<>("METHOD_FULL_NAME");

/** The FULL_NAME of a the AST parent of an entity */
public static final Key AST_PARENT_FULL_NAME = new Key<>("AST_PARENT_FULL_NAME");

/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

/** The dispatch type of a call, which is either static or dynamic. See dispatchTypes */
public static final Key DISPATCH_TYPE = new Key<>("DISPATCH_TYPE");

/** The group ID for a dependency */
public static final Key DEPENDENCY_GROUP_ID = new Key<>("DEPENDENCY_GROUP_ID");

/** The original name of the (potentially mangled) captured variable */
public static final Key CLOSURE_ORIGINAL_NAME = new Key<>("CLOSURE_ORIGINAL_NAME");

/** The programming language this graph originates from */
public static final Key LANGUAGE = new Key<>("LANGUAGE");

/** The static type decl of a TYPE. This property is matched against the FULL_NAME of TYPE_DECL nodes. It is required to have exactly one TYPE_DECL for each different TYPE_DECL_FULL_NAME */
public static final Key TYPE_DECL_FULL_NAME = new Key<>("TYPE_DECL_FULL_NAME");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** The static types a TYPE_DECL inherits from. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key INHERITS_FROM_TYPE_FULL_NAME = new Key<>("INHERITS_FROM_TYPE_FULL_NAME");

/** The type of the AST parent. Since this is only used in some parts of the graph the list does not include all possible parents by intention. Possible parents: METHOD, TYPE_DECL, NAMESPACE_BLOCK */
public static final Key AST_PARENT_TYPE = new Key<>("AST_PARENT_TYPE");

/** Type full name of which a TYPE_DECL is an alias of */
public static final Key ALIAS_TYPE_FULL_NAME = new Key<>("ALIAS_TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Type name emitted by parser, only present for logical type UNKNOWN */
public static final Key PARSER_TYPE_NAME = new Key<>("PARSER_TYPE_NAME");

/** A method annotation */
public static class ANNOTATION { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** A literal value assigned to an ANNOTATION_PARAMETER */
public static class ANNOTATION_LITERAL { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

}

/** Formal annotation parameter */
public static class ANNOTATION_PARAMETER { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** Assignment of annotation argument to annotation parameter */
public static class ANNOTATION_PARAMETER_ASSIGN { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** Initialization construct for arrays */
public static class ARRAY_INITIALIZER { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** A binding of a METHOD into a TYPE_DECL */
public static class BINDING { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Method signature. The format is defined by the language front-end, and the backend simply compares strings to resolve function overloading, i.e. match call-sites to METHODs. In theory, consecutive integers would be valid, but in practice this should be human readable */
public static final Key SIGNATURE = new Key<>("SIGNATURE");

}

/** A structuring block in the AST */
public static class BLOCK { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/** A (method)-call */
public static class CALL { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Deprecated */
public static final Key METHOD_INST_FULL_NAME = new Key<>("METHOD_INST_FULL_NAME");

/** The FULL_NAME of a method. Used to link CALL and METHOD nodes. It is required to have exactly one METHOD node for each METHOD_FULL_NAME */
public static final Key METHOD_FULL_NAME = new Key<>("METHOD_FULL_NAME");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** The dispatch type of a call, which is either static or dynamic. See dispatchTypes */
public static final Key DISPATCH_TYPE = new Key<>("DISPATCH_TYPE");

/** Method signature. The format is defined by the language front-end, and the backend simply compares strings to resolve function overloading, i.e. match call-sites to METHODs. In theory, consecutive integers would be valid, but in practice this should be human readable */
public static final Key SIGNATURE = new Key<>("SIGNATURE");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** Indicates whether a call was already resolved. If not set this means not yet resolved */
public static final Key RESOLVED = new Key<>("RESOLVED");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/**  */
public static class CALL_CHAIN { 
}

/**  */
public static class CALL_SITE { 
}

/** Represents the binding of a LOCAL or METHOD_PARAMETER_IN into the closure of a method */
public static class CLOSURE_BINDING { 
/** Identifier which uniquely describes a CLOSURE_BINDING. This property is used to match captured LOCAL nodes with the corresponding CLOSURE_BINDING nodes */
public static final Key CLOSURE_BINDING_ID = new Key<>("CLOSURE_BINDING_ID");

/** Evaluation strategy for function parameters and return values. One of the values in "evaluationStrategies" */
public static final Key EVALUATION_STRATEGY = new Key<>("EVALUATION_STRATEGY");

/** The original name of the (potentially mangled) captured variable */
public static final Key CLOSURE_ORIGINAL_NAME = new Key<>("CLOSURE_ORIGINAL_NAME");

}

/** A comment */
public static class COMMENT { 
/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

}

/** Configuration file contents. Might be in use by a framework */
public static class CONFIG_FILE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Content of CONFIG_FILE node */
public static final Key CONTENT = new Key<>("CONTENT");

}

/** A control structure such as if, while, or for */
public static class CONTROL_STRUCTURE { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Type name emitted by parser, only present for logical type UNKNOWN */
public static final Key PARSER_TYPE_NAME = new Key<>("PARSER_TYPE_NAME");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

}

/** This node represents a dependency */
public static class DEPENDENCY { 
/** A version, given as a string */
public static final Key VERSION = new Key<>("VERSION");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** The group ID for a dependency */
public static final Key DEPENDENCY_GROUP_ID = new Key<>("DEPENDENCY_GROUP_ID");

}

/**  */
public static class DETACHED_TRACKING_POINT { 
}

/** Attribute of a DOM node */
public static class DOM_ATTRIBUTE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Tag value */
public static final Key VALUE = new Key<>("VALUE");

}

/** A node in a Document Object Model (Tree) as obtained from, e.g., an HTML parser */
public static class DOM_NODE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

}

/** Node representing a source file. Often also the AST root */
public static class FILE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/**  */
public static class FINDING { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/**  */
public static final Key CATEGORY = new Key<>("CATEGORY");

/**  */
public static final Key TITLE = new Key<>("TITLE");

/**  */
public static final Key DESCRIPTION = new Key<>("DESCRIPTION");

/**  */
public static final Key SCORE = new Key<>("SCORE");

/**  */
public static final Key LINK = new Key<>("LINK");

/**  */
public static final Key VULN_DESCR = new Key<>("VULN_DESCR");

/**  */
public static final Key PARAMETER = new Key<>("PARAMETER");

/**  */
public static final Key METHOD_NAME = new Key<>("METHOD_NAME");

/**  */
public static final Key LINE_NO = new Key<>("LINE_NO");

/**  */
public static final Key FILENAME = new Key<>("FILENAME");

/**  */
public static final Key OWASP_LINK = new Key<>("OWASP_LINK");

/**  */
public static final Key CWE_LINK = new Key<>("CWE_LINK");

}

/**  */
public static class FLOW { 
}

/** Indicates the usage of a framework. E.g. java spring. The name key is one of the values from frameworks list */
public static class FRAMEWORK { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

}

/** Data used by a framework */
public static class FRAMEWORK_DATA { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Content of CONFIG_FILE node */
public static final Key CONTENT = new Key<>("CONTENT");

}

/** An arbitrary identifier/reference */
public static class IDENTIFIER { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/** An implicit call site hidden in a method indicated by METHOD_MAP policy entries */
public static class IMPLICIT_CALL { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Method signature. The format is defined by the language front-end, and the backend simply compares strings to resolve function overloading, i.e. match call-sites to METHODs. In theory, consecutive integers would be valid, but in practice this should be human readable */
public static final Key SIGNATURE = new Key<>("SIGNATURE");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/**  */
public static class IOFLOW { 
/**  */
public static final Key FINGERPRINT = new Key<>("FINGERPRINT");

/**  */
public static final Key LITERALS_TO_SINK = new Key<>("LITERALS_TO_SINK");

}

/** Literal/Constant */
public static class LITERAL { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/** A local variable */
public static class LOCAL { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Identifier which uniquely describes a CLOSURE_BINDING. This property is used to match captured LOCAL nodes with the corresponding CLOSURE_BINDING nodes */
public static final Key CLOSURE_BINDING_ID = new Key<>("CLOSURE_BINDING_ID");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/**  */
public static class LOCATION { 
/**  */
public static final Key SYMBOL = new Key<>("SYMBOL");

/** The FULL_NAME of a method. Used to link CALL and METHOD nodes. It is required to have exactly one METHOD node for each METHOD_FULL_NAME */
public static final Key METHOD_FULL_NAME = new Key<>("METHOD_FULL_NAME");

/**  */
public static final Key METHOD_SHORT_NAME = new Key<>("METHOD_SHORT_NAME");

/**  */
public static final Key PACKAGE_NAME = new Key<>("PACKAGE_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/**  */
public static final Key CLASS_NAME = new Key<>("CLASS_NAME");

/**  */
public static final Key NODE_LABEL = new Key<>("NODE_LABEL");

/**  */
public static final Key FILENAME = new Key<>("FILENAME");

}

/**  */
public static class MATCH_INFO { 
/**  */
public static final Key PATTERN = new Key<>("PATTERN");

/**  */
public static final Key CATEGORY = new Key<>("CATEGORY");

}

/** Member of a class struct or union */
public static class MEMBER { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** Node to save meta data about the graph on its properties. Exactly one node of this type per graph */
public static class META_DATA { 
/** The programming language this graph originates from */
public static final Key LANGUAGE = new Key<>("LANGUAGE");

/** A version, given as a string */
public static final Key VERSION = new Key<>("VERSION");

/**  */
public static final Key SPID = new Key<>("SPID");

}

/** A method/function/procedure */
public static class METHOD { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** Indicates that the construct (METHOD or TYPE_DECL) is external, that is, it is referenced but not defined in the code (applies both to insular parsing and to library functions where we have header files only) */
public static final Key IS_EXTERNAL = new Key<>("IS_EXTERNAL");

/** Method signature. The format is defined by the language front-end, and the backend simply compares strings to resolve function overloading, i.e. match call-sites to METHODs. In theory, consecutive integers would be valid, but in practice this should be human readable */
public static final Key SIGNATURE = new Key<>("SIGNATURE");

/** The type of the AST parent. Since this is only used in some parts of the graph the list does not include all possible parents by intention. Possible parents: METHOD, TYPE_DECL, NAMESPACE_BLOCK */
public static final Key AST_PARENT_TYPE = new Key<>("AST_PARENT_TYPE");

/** The FULL_NAME of a the AST parent of an entity */
public static final Key AST_PARENT_FULL_NAME = new Key<>("AST_PARENT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** Line where the code ends */
public static final Key LINE_NUMBER_END = new Key<>("LINE_NUMBER_END");

/** Column where the code ends */
public static final Key COLUMN_NUMBER_END = new Key<>("COLUMN_NUMBER_END");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Marks that a method has at least one mapping defined from the policies */
public static final Key HAS_MAPPING = new Key<>("HAS_MAPPING");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

/** Binary type signature */
public static final Key BINARY_SIGNATURE = new Key<>("BINARY_SIGNATURE");

}

/** A method instance which always has to reference a method and may have type argument children if the referred to method is a template */
public static class METHOD_INST { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Method signature. The format is defined by the language front-end, and the backend simply compares strings to resolve function overloading, i.e. match call-sites to METHODs. In theory, consecutive integers would be valid, but in practice this should be human readable */
public static final Key SIGNATURE = new Key<>("SIGNATURE");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** The FULL_NAME of a method. Used to link CALL and METHOD nodes. It is required to have exactly one METHOD node for each METHOD_FULL_NAME */
public static final Key METHOD_FULL_NAME = new Key<>("METHOD_FULL_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** This node represents a formal parameter going towards the callee side */
public static class METHOD_PARAMETER_IN { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Evaluation strategy for function parameters and return values. One of the values in "evaluationStrategies" */
public static final Key EVALUATION_STRATEGY = new Key<>("EVALUATION_STRATEGY");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

}

/** This node represents a formal parameter going towards the caller side */
public static class METHOD_PARAMETER_OUT { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Evaluation strategy for function parameters and return values. One of the values in "evaluationStrategies" */
public static final Key EVALUATION_STRATEGY = new Key<>("EVALUATION_STRATEGY");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

}

/** Reference to a method instance */
public static class METHOD_REF { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** Deprecated */
public static final Key METHOD_INST_FULL_NAME = new Key<>("METHOD_INST_FULL_NAME");

/** The FULL_NAME of a method. Used to link CALL and METHOD nodes. It is required to have exactly one METHOD node for each METHOD_FULL_NAME */
public static final Key METHOD_FULL_NAME = new Key<>("METHOD_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/** A formal method return */
public static class METHOD_RETURN { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Evaluation strategy for function parameters and return values. One of the values in "evaluationStrategies" */
public static final Key EVALUATION_STRATEGY = new Key<>("EVALUATION_STRATEGY");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/**  */
public static class METHOD_SUMMARY { 
/**  */
public static final Key IS_STATIC = new Key<>("IS_STATIC");

/** Indicates that the construct (METHOD or TYPE_DECL) is external, that is, it is referenced but not defined in the code (applies both to insular parsing and to library functions where we have header files only) */
public static final Key IS_EXTERNAL = new Key<>("IS_EXTERNAL");

/** Binary type signature */
public static final Key BINARY_SIGNATURE = new Key<>("BINARY_SIGNATURE");

}

/** A modifier, e.g., static, public, private */
public static class MODIFIER { 
/** Indicates the modifier which is represented by a MODIFIER node. See modifierTypes */
public static final Key MODIFIER_TYPE = new Key<>("MODIFIER_TYPE");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** This node represents a namespace as a whole whereas the NAMESPACE_BLOCK is used for each grouping occurrence of a namespace in code. Single representing NAMESPACE node is required for easier navigation in the query language */
public static class NAMESPACE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** A reference to a namespace */
public static class NAMESPACE_BLOCK { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/**  */
public static class PROGRAM_POINT { 
}

/**  */
public static class READ { 
}

/** A return instruction */
public static class RETURN { 
/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/**  */
public static class ROUTE { 
/**  */
public static final Key PATH = new Key<>("PATH");

}

/**  */
public static class SENSITIVE_DATA_TYPE { 
/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

}

/**  */
public static class SENSITIVE_MEMBER { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

}

/**  */
public static class SENSITIVE_REFERENCE { 
}

/**  */
public static class SENSITIVE_VARIABLE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

}

/**  */
public static class SINK { 
/**  */
public static final Key SINK_TYPE = new Key<>("SINK_TYPE");

}

/**  */
public static class SOURCE { 
/**  */
public static final Key SOURCE_TYPE = new Key<>("SOURCE_TYPE");

}

/**  */
public static class SP_ANNOTATION_PARAMETER { 
/**  */
public static final Key ANNOTATION_NAME = new Key<>("ANNOTATION_NAME");

/**  */
public static final Key ANNOTATION_FULL_NAME = new Key<>("ANNOTATION_FULL_NAME");

/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Tag value */
public static final Key VALUE = new Key<>("VALUE");

}

/**  */
public static class SP_BLACKLIST { 
}

/** A string tag */
public static class TAG { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Tag value */
public static final Key VALUE = new Key<>("VALUE");

}

/** Multiple tags */
public static class TAGS { 
}

/**  */
public static class TAG_NODE_PAIR { 
}

/**  */
public static class TRANSFORM { 
}

/**  */
public static class TRANSFORMATION { 
}

/** A type which always has to reference a type declaration and may have type argument children if the referred to type declaration is a template */
public static class TYPE { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** The static type decl of a TYPE. This property is matched against the FULL_NAME of TYPE_DECL nodes. It is required to have exactly one TYPE_DECL for each different TYPE_DECL_FULL_NAME */
public static final Key TYPE_DECL_FULL_NAME = new Key<>("TYPE_DECL_FULL_NAME");

}

/** Argument for a TYPE_PARAMETER that belongs to a TYPE. It binds another TYPE to a TYPE_PARAMETER */
public static class TYPE_ARGUMENT { 
/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** A type declaration */
public static class TYPE_DECL { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** Full name of an element, e.g., the class name along, including its package (e.g. "io.shiftleft.dataflowenging.layers.dataflows.DataFlowRunner.run"). In theory, the FULL_NAME just needs to be unique and is used for linking references, so a consecutive integer would be valid. In practice, this should be human readable */
public static final Key FULL_NAME = new Key<>("FULL_NAME");

/** Indicates that the construct (METHOD or TYPE_DECL) is external, that is, it is referenced but not defined in the code (applies both to insular parsing and to library functions where we have header files only) */
public static final Key IS_EXTERNAL = new Key<>("IS_EXTERNAL");

/** The static types a TYPE_DECL inherits from. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key INHERITS_FROM_TYPE_FULL_NAME = new Key<>("INHERITS_FROM_TYPE_FULL_NAME");

/** The type of the AST parent. Since this is only used in some parts of the graph the list does not include all possible parents by intention. Possible parents: METHOD, TYPE_DECL, NAMESPACE_BLOCK */
public static final Key AST_PARENT_TYPE = new Key<>("AST_PARENT_TYPE");

/** The FULL_NAME of a the AST parent of an entity */
public static final Key AST_PARENT_FULL_NAME = new Key<>("AST_PARENT_FULL_NAME");

/** Type full name of which a TYPE_DECL is an alias of */
public static final Key ALIAS_TYPE_FULL_NAME = new Key<>("ALIAS_TYPE_FULL_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** Type parameter of TYPE_DECL or METHOD */
public static class TYPE_PARAMETER { 
/** Name of represented object, e.g., method name (e.g. "run") */
public static final Key NAME = new Key<>("NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

}

/** A language-specific node */
public static class UNKNOWN { 
/** The code snippet the node represents */
public static final Key CODE = new Key<>("CODE");

/** Type name emitted by parser, only present for logical type UNKNOWN */
public static final Key PARSER_TYPE_NAME = new Key<>("PARSER_TYPE_NAME");

/** General ordering property, such that the children of each AST-node are typically numbered from 1, ..., N (this is not enforced). The ordering has no technical meaning, but is used for pretty printing and OUGHT TO reflect order in the source code */
public static final Key ORDER = new Key<>("ORDER");

/** AST-children of CALL nodes have an argument index, that is used to match call-site arguments with callee parameters. Explicit parameters are numbered from 1 to N, while index 0 is reserved for implicit self / this parameter. CALLs without implicit parameter therefore have arguments starting with index 1. AST-children of BLOCK nodes may have an argument index as well; in this case, the last argument index determines the return-value of a BLOCK expression */
public static final Key ARGUMENT_INDEX = new Key<>("ARGUMENT_INDEX");

/** The static type of an entity. E.g. expressions, local, parameters etc. This property is matched against the FULL_NAME of TYPE nodes and thus it is required to have at least one TYPE node for each TYPE_FULL_NAME */
public static final Key TYPE_FULL_NAME = new Key<>("TYPE_FULL_NAME");

/** Type hint for the dynamic type */
public static final Key DYNAMIC_TYPE_HINT_FULL_NAME = new Key<>("DYNAMIC_TYPE_HINT_FULL_NAME");

/** Line where the code starts */
public static final Key LINE_NUMBER = new Key<>("LINE_NUMBER");

/** Column where the code starts */
public static final Key COLUMN_NUMBER = new Key<>("COLUMN_NUMBER");

/** The depth first ordering number used to detect back edges in reducible CFGs */
public static final Key DEPTH_FIRST_ORDER = new Key<>("DEPTH_FIRST_ORDER");

}

/**  */
public static class VARIABLE_INFO { 
/**  */
public static final Key VAR_TYPE = new Key<>("VAR_TYPE");

/**  */
public static final Key EVALUATION_TYPE = new Key<>("EVALUATION_TYPE");

/**  */
public static final Key PARAMETER_INDEX = new Key<>("PARAMETER_INDEX");

}

/**  */
public static class WRITE { 
}

/** This node records what package prefix is most common to all analysed classes in the CPG */
public static class PACKAGE_PREFIX { 
/** Tag value */
public static final Key VALUE = new Key<>("VALUE");

}



}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy