CodeOntology
type: Ontology
comment: An ontology that represents object-oriented programming languages

constructs
type: ObjectProperty
sub property of: references
inverse of: is constructed by
domain: Executable
range: Class
comment: The constructs property relates an executable to the classes it constructs.

declares
type: ObjectProperty
sub property of: hasPart
inverse of: is declared by
type: InverseFunctionalProperty
domain: Code Element
range: Code Element
comment: The declares property relates a code element to the elements it declares. For instance, a class is linked to its fields, methods and constructors.

extends
type: ObjectProperty
sub property of: specializes
inverse of: has subclass
type: FunctionalProperty
domain: Class
  union of: Class
  union of: Interface
  union of: Type Variable
  union of: Wildcard
comment: The extends property relates a class, an interface, a type variable or a wildacard to the types it extends.

has actual type argument
type: ObjectProperty
domain: Parameterized Type
range: Type Argument
comment: The hasActualTypeArgument property relates a parameterized type to each of its actual type arguments

has annotation
type: ObjectProperty
inverse of: is annotation of
domain: Code Element
range: Annotation
comment: The hasAnnotation property relates a code element to its annotations

has argument
type: ObjectProperty
domain: Executable invocation expression
range: Actual Argument
comment: The hasArgument property relates an executable invocation to each of its actual arguments.

has assert expression
type: ObjectProperty
sub property of: has subexpression
inverse of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Assert Statement
range: Expression
comment: The hasAssertExpression property relates an assert statement to the boolean expression asserted to be true

has body
type: ObjectProperty
sub property of: has substatement
inverse of: is body of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Class
  union of: Executable
  union of: Loop Statement
  union of: Try Statement
range: Block Statement
comment: The hasBody property relates an executable or a statement to its body.

has catch clause
type: ObjectProperty
sub property of: has substatement
inverse of: is catch clause of
type: InverseFunctionalProperty
domain: Try Statement
range: Catch Block
comment: The hasCatchClause property relates a try statement to the relative catch clauses.

has catch formal parameter
type: ObjectProperty
domain: Catch Block
range: Class
comment: The hasCatchFormalParameter property relates a catch clause to its formal parameters, namely the throwable objects it caughts

has condition
type: ObjectProperty
sub property of: has subexpression
inverse of: is condition of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Class
  union of: Do Statement
  union of: For Statement
  union of: If-then-else statement
  union of: While Statement
range: Expression
comment: The hasCondition property specifies a condition for a statement to be executed.

has constructor
type: ObjectProperty
sub property of: declares
inverse of: is constructor of
type: InverseFunctionalProperty
domain: Class
  union of: Class
  union of: Enum
range: Constructor
comment: The hasConstructor property relates a class to its constructors.

has declaration
type: ObjectProperty
sub property of: topObjectProperty
type: FunctionalProperty
domain: Variable
range: Variable Declaration
comment: The hasDeclaration property relates a variable to the statement it was declared by.

has dependency
type: ObjectProperty
inverse of: is dependency of
domain: Project
range: Library
comment: The hasDependency property relates a project to its dependencies.

has else branch
type: ObjectProperty
sub property of: has substatement
inverse of: is else branch of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: If-then-else statement
range: Statement
comment: The hasElseBranch property relates a if-then-else statement to the statement in the else branch.

has field
type: ObjectProperty
sub property of: declares
inverse of: is field of
type: InverseFunctionalProperty
domain: Complex Type
range: Field
comment: The hasField property relates a class to its fields

has finally clause
type: ObjectProperty
sub property of: has substatement
inverse of: is finally clause of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Try Statement
range: Finally Block
comment: The hasFinallyClause property relates a try statemet to its finally clause.

has for init
type: ObjectProperty
sub property of: has subexpression
inverse of: is for init of
type: InverseFunctionalProperty
domain: For Statement
range: Expression
comment: The hasForInit property relates a basic for statement to each statement expression executed as initialization code, before the first iteration step is performed

has for update
type: ObjectProperty
sub property of: has subexpression
inverse of: is for update of
type: InverseFunctionalProperty
domain: For Statement
range: Expression
comment: The hasForUpdate property relates a basic for statement to each expression evaluated as update code at the end of every iteration

has formal type parameter
type: ObjectProperty
domain: Class
  union of: Class
  union of: Enum
  union of: Executable
  union of: Interface
range: Type Variable
comment: The hasFormalTypeParameter property relates a class, an interface, an enumeration, a constructor or a method to the formal type parameters it declares

has generic type
type: ObjectProperty
type: FunctionalProperty
domain: Parameterized Type
range: Class
  union of: Class
  union of: Interface
  union of: Type Variable
  union of: Wildcard
comment: The hasGenericType property relates a parameterized type to the generic type it is a parameterization of

has initializer
type: ObjectProperty
sub property of: has subexpression
inverse of: is initializer of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Variable Declaration
range: Expression
comment: The hasInitializer property relates a variable declaration to the expression assigned to the declared variable

has left hand side
type: ObjectProperty
sub property of: has subexpression
inverse of: is left hand side of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Assignment Expression
range: Expression
comment: The hasLeftHandSide property relates a assignement expression to the left hand side expression it contains

has method
type: ObjectProperty
sub property of: declares
inverse of: is method of
type: InverseFunctionalProperty
domain: Complex Type
range: Method
comment: The ihasMehtod property relates a class to its methods.

has modifier
type: ObjectProperty
inverse of: is modifier of
domain: Modifiable
range: Modifier
comment: The hasGenericType property relates a modifiable element to its modifiers

next
type: ObjectProperty
sub property of: next
inverse of: has previous statement
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Statement
range: Statement
comment: The hasNextStatement property relates a statement to the next statement to be executed.

has package
type: ObjectProperty
sub property of: is declared by
inverse of: is package of
type: FunctionalProperty
domain: Class
  union of: Annotation
  union of: Complex Type
range: Package
comment: The hasPackage property relates a class, interface, enum or annotation to the package it is declared by.

has parameter
type: ObjectProperty
inverse of: is parameter of
type: InverseFunctionalProperty
domain: Executable
range: Parameter
comment: The hasParameter property relates a constructor or a method to the formal parameters it declares

has previous statement
type: ObjectProperty
sub property of: previous
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Statement
range: Statement
comment: The hasPreviousStatement property relates a statement to the previous one.

has project
type: ObjectProperty
sub property of: isPartOf
inverse of: is project of
type: FunctionalProperty
domain: Package
range: Project
comment: The hasProject property relates a package to the project it belongs to.

has resource
type: ObjectProperty
domain: Try Statement
range: Local Variable
comment: The hasResource property relates a try statement to each local variable declared to act as resource for the try statement

has return type
type: ObjectProperty
sub property of: has type
inverse of: is return type of
type: FunctionalProperty
domain: Method
range: Type
comment: The hasReturnType property relates a method to its return type.

has returned expression
type: ObjectProperty
sub property of: has subexpression
inverse of: is returned expression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Return Statement
range: Expression
comment: The hasReturnedExpression property relates a return statement to the returned expression

has subclass
type: ObjectProperty
sub property of: generalizes
type: InverseFunctionalProperty
domain: Class
  union of: Class
  union of: Interface
  union of: Type Variable
  union of: Wildcard
range: Class
  union of: Annotation
  union of: Complex Type
comment: The hasSubClass property relates a class to its direct sub-classes

has subexpression
type: ObjectProperty
sub property of: hasPart
inverse of: is subexpression of
type: InverseFunctionalProperty
domain: Class
  union of: Expression
  union of: Statement
range: Expression
comment: The hasSubExpression property relates a statement or expression to the expressions it contains.

has subproject
type: ObjectProperty
sub property of: hasPart
inverse of: is subproject of
type: InverseFunctionalProperty
domain: Project
range: Project
comment: The hasSubProject property relates a project to its subprojects

has substatement
type: ObjectProperty
sub property of: hasPart
inverse of: is substatement of
type: InverseFunctionalProperty
domain: Class
  union of: Executable
  union of: Statement
range: Statement
comment: The hasSubStatement property relates a statment to its sub-statements.

has super bound
type: ObjectProperty
sub property of: generalizes
domain: Wildcard
range: Class
  union of: Class
  union of: Interface
  union of: Parameterized Type
  union of: Type Variable
comment: The hasSuperBound property relates a lower bounded wildcard to its bouds.

has switch label
type: ObjectProperty
sub property of: has substatement
inverse of: is switch label of
type: InverseFunctionalProperty
domain: Switch Statement
range: Labeled Block
comment: The hasSwitchLabel property relates a switch statement to its cases.

has target
type: ObjectProperty
sub property of: has subexpression
inverse of: is target of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Method Invocation Expression
range: Expression
comment: The hasTarget property relates a method invocation expression to its target.

has then branch
type: ObjectProperty
sub property of: has substatement
inverse of: is then branch of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: If-then-else statement
range: Statement
comment: The hasThenBranch property relates a if-then-else statement to the statement declared in the "then" branch

has thrown expression
type: ObjectProperty
sub property of: has subexpression
inverse of: is thrown expression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Throw Statement
range: Expression
comment: The hasThrownExpression property relates a thrown statement to the expression it throws

has type
type: ObjectProperty
inverse of: is type of
type: FunctionalProperty
domain: Class
  union of: Expression
  union of: Method
  union of: Variable
range: Type
comment: The hasType property relates an expression, a variable or a method to its type.

has variable
type: ObjectProperty
type: FunctionalProperty
type: InverseFunctionalProperty
domain: ForEach Statement
range: Local Variable
comment: The hasVariable property relates a for-each statement to the local variable it declares.

implements
type: ObjectProperty
sub property of: specializes
inverse of: is implemented by
domain: Class
range: Interface
comment: The implements property relates a class to each implemented interface.

invokes
type: ObjectProperty
sub property of: topObjectProperty
type: FunctionalProperty
domain: Executable invocation expression
range: Executable
comment: The invokes property relates a invocation expression to the invoked executable.

is annotation of
type: ObjectProperty
domain: Annotation
range: Code Element
comment: The isAnnotationOf property relates an annotation to the annotated code element.

is array of
type: ObjectProperty
domain: Array Type
range: Type
comment: The isArrayOf property relates an arrray to the type of its elements at the finest grain. For instance, an array of type "int[][][]" is linked to the type "int". The number of dimensions of the array is specified by the dimensions property.

is subexpression of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Assert Statement
comment: The isAssertExpressionOf property relates a boolean expression to the assert statement it is contained in.

is body of
type: ObjectProperty
sub property of: is substatement of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Block Statement
range: Class
  union of: Executable
  union of: Loop Statement
  union of: Try Statement
comment: The isBodyOf property relates a block to the exexcutable or statement it is the body of.

is catch clause of
type: ObjectProperty
sub property of: is substatement of
type: FunctionalProperty
domain: Catch Block
range: Try Statement
comment: The isCatchClauseOf property relates a catch clause to the corresponding try statement.

is condition of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Class
  union of: Do Statement
  union of: For Statement
  union of: If-then-else statement
  union of: While Statement
comment: The isConditionOf property relates a if-then-else statement or a loop to its condition.

is constructed by
type: ObjectProperty
sub property of: is referenced by
domain: Class
range: Executable
comment: The isConstructedBy property relates a class to the executables that instantiates objects of that class.

is constructor of
type: ObjectProperty
sub property of: is declared by
type: FunctionalProperty
domain: Constructor
range: Class
  union of: Class
  union of: Enum
comment: The isConstructorOf property relates a constructor to the class it is declared by.

is declared by
type: ObjectProperty
sub property of: isPartOf
type: FunctionalProperty
domain: Code Element
range: Code Element
comment: The isDeclaredBy property relates a code element to the element it is declared by.

is dependency of
type: ObjectProperty
domain: Library
range: Project
comment: The isDependencyOf property relates a library to the projects that depend on this library.

is else branch of
type: ObjectProperty
sub property of: is substatement of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Statement
range: If-then-else statement
comment: The isElseBranchOf property relates the statement in an else branch to the corresponding If-then-else statement

is field of
type: ObjectProperty
sub property of: is declared by
type: FunctionalProperty
domain: Field
range: Complex Type
comment: The isFieldOf property relates a field to the class, interface or enum it is declared by.

is finally clause of
type: ObjectProperty
sub property of: is substatement of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Finally Block
range: Try Statement
comment: The isFinallyClauseOf property relates the statement enclosed in a finally clause to the corresponding try statement.

is for init of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
domain: Expression
range: For Statement
comment: The isForInitOf property relates an expression executed as initialization code of a basic for statement to the relative for statement.

is for update of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
domain: Expression
range: For Statement
comment: The isForUpdateOf property relates an expression evaluated as update code of a for statement at the end of every iteration, to the corresponding for statement.

is implemented by
type: ObjectProperty
sub property of: generalizes
domain: Interface
range: Class
comment: The isImplementedBy property relates an interface to the classes implementig that interface

is initializer of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Variable Declaration
comment: The isInitializerOf property relates an expression used to initialize a variable, to the statement it is contained in.

is left hand side of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Assignment Expression
comment: The isLeftHandSideOf property relates an expression that is used as left hand side expression of an assignemnt, to the corresponding assignment expression

is method of
type: ObjectProperty
sub property of: is declared by
type: FunctionalProperty
domain: Method
range: Complex Type
comment: The isMethodOf property relates a method to the class, enum or interface it is declared by.

is modifier of
type: ObjectProperty
domain: Modifier
range: Modifiable
comment: The isModifierOf property relates a modifier to the corresponding modifiable element.

is overridden by
type: ObjectProperty
sub property of: generalizes
inverse of: overrides
type: InverseFunctionalProperty
domain: Method
range: Method
comment: The isOverridenBy property relates a method to the ones it is overridden by.

is package of
type: ObjectProperty
sub property of: declares
type: InverseFunctionalProperty
domain: Package
range: Class
  union of: Annotation
  union of: Complex Type
comment: The isPackageOf property relates a package to the types it declares.

is parameter of
type: ObjectProperty
type: InverseFunctionalProperty
domain: Parameter
range: Executable
comment: The isParameterOf property relates a parameter to the corresponding executable.

is project of
type: ObjectProperty
sub property of: hasPart
type: InverseFunctionalProperty
domain: Project
range: Package
comment: The isProjectOf property relates a project to the packages it contains.

is referenced by
type: ObjectProperty
inverse of: references
domain: Code Element
range: Code Element
comment: The isReferencedBy property relates a code element to the elements it is referenced by.

is return type of
type: ObjectProperty
sub property of: is type of
type: InverseFunctionalProperty
domain: Type
range: Method
comment: The isReturnTypeOf property relates a type to the methods that return objects of that type.

is returned by
type: ObjectProperty
inverse of: returns
type: InverseFunctionalProperty
domain: Variable
range: Method
comment: The isReturnedBy property relates a variable to the methods that return that variable.

is returned expression of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Return Statement
comment: The isReturnedExpressionOf property relates an expression returned by a method to the return statement it is contained in.

is subexpression of
type: ObjectProperty
sub property of: isPartOf
type: FunctionalProperty
domain: Expression
range: Class
  union of: Expression
  union of: Statement
comment: The isSubExpressionOf property relates an expression to its parent expression.

is subproject of
type: ObjectProperty
sub property of: isPartOf
type: FunctionalProperty
domain: Project
range: Project
comment: The isSubProjectOf property relates a project to its parent project.

is substatement of
type: ObjectProperty
sub property of: isPartOf
domain: Statement
range: Class
  union of: Executable
  union of: Statement
comment: The isSubStatementOf property relates a statement to the method, constructor or statement it is contained in.

is switch label of
type: ObjectProperty
sub property of: is substatement of
type: FunctionalProperty
domain: Labeled Block
range: Switch Statement
comment: The isSwitchLabelOf property relates a case labeled block or a default block to the corresponding switch statement.

is target of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Method Invocation Expression
comment: The isTargetOf property relates an expression used as target of a method invocation, to the corresponding method invocation.

is then branch of
type: ObjectProperty
sub property of: is substatement of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Statement
range: If-then-else statement
comment: The isThenBranchOf property relates a statement enclosed in a then branch to the corresponding If-then-else statement

is thrown by
type: ObjectProperty
sub property of: is referenced by
inverse of: throws
domain: Class
range: Executable
comment: The isThrownBy property relates an exception to the executables it is thrown by.

is thrown expression of
type: ObjectProperty
sub property of: is subexpression of
type: FunctionalProperty
type: InverseFunctionalProperty
domain: Expression
range: Throw Statement
comment: The isThrownExpressionOf property relates a thrown expression, to the throw statement it is contained in.

is type of
type: ObjectProperty
type: InverseFunctionalProperty
domain: Type
range: Class
  union of: Expression
  union of: Method
  union of: Variable
comment: The isTypeOf property relates a type to the elements of that type.

overrides
type: ObjectProperty
sub property of: specializes
type: FunctionalProperty
domain: Method
range: Method
comment: The overrides property relates a method to the method it overrides.

references
type: ObjectProperty
domain: Code Element
range: Code Element
comment: The references property relates a method or a constructor to the types, methods, constructors and fields it references.

returns
type: ObjectProperty
type: FunctionalProperty
domain: Method
range: Variable
comment: The returns property relates a method to the variable it returns, if any.

throws
type: ObjectProperty
sub property of: references
domain: Executable
range: Class
comment: The throws property relates a method or a constructor to the exceptions it declares to throw.

build file
type: DatatypeProperty
type: FunctionalProperty
domain: Project
range: string
comment: Links a project to the content of its build file.

has canonical name
type: DatatypeProperty
sub property of: name
domain: Complex Type
range: string
comment: Links a class, enum or interface to its canonical name. For instance, the class Java.lang.String is linked to the string "java.lang.string"

dimensions
type: DatatypeProperty
type: FunctionalProperty
domain: Array Type
range: int
comment: Links an array to the number of its dimensions. As an example, an array of type "int[][][]" has a dimensions count of 3

end line
type: DatatypeProperty
type: FunctionalProperty
domain: Block Statement
range: int
comment: Links a statement to the number of the last line it covers

label
type: DatatypeProperty
sub property of: topDataProperty
type: FunctionalProperty
domain: Statement
range: string
comment: Links a labeled statement to its label

line
type: DatatypeProperty
type: FunctionalProperty
domain: Class
  union of: Expression
  union of: Statement
range: int
comment: Links a statement to the line it starts in

name
type: DatatypeProperty
type: FunctionalProperty
domain: Class
  union of: Code Element
  union of: Library
  union of: Project
range: string
comment: Links a element to its name

position
type: DatatypeProperty
type: FunctionalProperty
domain: Code Element
range: int
comment: Links a element to its position

has return description
type: DatatypeProperty
domain: Method
range: string
comment: the hasReturnDescriptionProperty relates a method to a description of its return value

has simple name
type: DatatypeProperty
sub property of: name
domain: Complex Type
range: string
comment: Links a class, enum or interface to its simple name. For instance, the simple name of the class java.lang.String is "String"

source code
type: DatatypeProperty
type: FunctionalProperty
domain: Code Element
range: string
comment: Links a element to its source code

targeted label
type: DatatypeProperty
type: FunctionalProperty
domain: Class
  union of: Break Statement
  union of: Continue Statement
range: string
comment: Links a break statement or a continue statement to the label it targets, if any

is var args
type: DatatypeProperty
type: FunctionalProperty
domain: Executable
range: boolean
comment: True if an executable accepts a variable number of parameters, false otherwise

Access Modifier
type: Class
subclass of: Modifier
comment: An access modifier

Actual Argument
type: Class
subclass of: Expression
subclass of: Restriction
  on property: has subexpression
  qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: position
  qualified cardinality: 1
  on data range: int
comment: The actual argument of a method

Annotation
type: Class
subclass of: Type
comment: An annotation

Anonymous Class
type: Class
subclass of: Class
comment: An anonymous class

Array Type
type: Class
subclass of: Type
subclass of: Restriction
  on property: is array of
  qualified cardinality: 1
  on class: Type
subclass of: Restriction
  on property: dimensions
  qualified cardinality: 1
  on data range: int
comment: An array type

Assert Statement
type: Class
subclass of: Statement
subclass of: Restriction
  on property: has assert expression
  qualified cardinality: 1
  on class: Expression
comment: An assert statement

Assignment Expression
type: Class
subclass of: Expression
subclass of: Restriction
  on property: has left hand side
  qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has subexpression
  qualified cardinality: 1
  on class: Expression
comment: An assignment expression. It involves one of the following operators: =, *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=

Block Statement
type: Class
subclass of: Statement
comment: A block

Branching Statement
type: Class
subclass of: Control Flow Statement
comment: A branching statement, namely a break statement, a continue statement or a return statement

Break Statement
type: Class
subclass of: Branching Statement
comment: The BreakStatement class represents a break statement. The break statement has two forms: labeled and unlabeled. In case a break statement is labeled, the label is defined through the targetedLabel property

Case Labeled Block
type: Class
subclass of: Labeled Block
subclass of: Restriction
  on property: has subexpression
  qualified cardinality: 1
  on class: Expression
comment: A case-labeled list of statements

Catch Block
type: Class
subclass of: Block Statement
subclass of: Restriction
  on property: has catch formal parameter
  some values from: Class
comment: A catch block

Class
subclass of: Complex Type
subclass of: Restriction
  on property: extends
  all values from: Class
subclass of: Restriction
  on property: has declaration
  all values from: Class Declaration Statement
subclass of: Restriction
  on property: implements
  all values from: Interface
subclass of: Restriction
  on property: extends
  qualified cardinality: 1
  on class: Class
comment: A class

Class Declaration Statement
type: Class
subclass of: Declaration statement
disjoint with: Variable Declaration
comment: A statement that corresponds to the declaration of a local class

Class Instance Creation Expression
type: Class
subclass of: Executable invocation expression
disjoint with: Method Invocation Expression
comment: An expression that creates a class instance, in other words a constructor call

Code Element
type: Class
comment: A generic element in source code

Complex Type
type: Class
subclass of: Modifiable
subclass of: Type
comment: A class or an enumeration or an interface

Constructor
type: Class
subclass of: Executable
disjoint with: Method
comment: A constructor of a Class

Continue Statement
type: Class
subclass of: Branching Statement
comment: A continue statement

Control Flow Statement
type: Class
subclass of: Statement
comment: A control flow statement, that is a statement that regulates the order in which statements are executed. Control Flow Statements break up the flow of execution by employing decision making, looping, or branching.

Decision Making Statement
type: Class
subclass of: Control Flow Statement
comment: A Decision Making Statement, that is a statement that break up the flow of execution by employing decision making. It can either be a if-then-else statement or a switch statement.

Declaration statement
type: Class
subclass of: Statement
comment: A statement that holds a declaration

Default Labeled Block
type: Class
subclass of: Labeled Block
comment: A default-labeled block

Do Statement
type: Class
subclass of: Loop Statement
subclass of: Restriction
  on property: has condition
  qualified cardinality: 1
  on class: Expression
comment: A do-while statement

Enum
type: Class
subclass of: Complex Type
comment: An enumeration

Executable
type: Class
subclass of: Code Element
subclass of: Modifiable
subclass of: Restriction
  on property: is var args
  some values from: boolean
comment: An executable block of code, namely a Method or a Constructor

Executable invocation expression
type: Class
subclass of: Expression
subclass of: Restriction
  on property: invokes
  qualified cardinality: 1
  on class: Executable
comment: An invocation of either a method or a constructor.

Expression
type: Class
subclass of: Code Element
subclass of: Restriction
  on property: has type
  qualified cardinality: 1
  on class: Type
subclass of: Restriction
  on property: line
  qualified cardinality: 1
  on data range: int
comment: A generic expression

Expression statement
type: Class
subclass of: Statement
subclass of: Restriction
  on property: has subexpression
  qualified cardinality: 1
  on class: Expression
comment: An expression statement. that is a statement that wraps an expression

Field
type: Class
subclass of: Modifiable
subclass of: Variable
subclass of: Restriction
  on property: has declaration
  all values from: Field Declaration
subclass of: Restriction
  on property: is declared by
  all values from: Class
    union of: Class
    union of: Enum
    union of: Interface
comment: A class field

Field Declaration
type: Class
subclass of: Variable Declaration
disjoint with: Local Variable Declaration Statement
comment: The declaration of a field

Finally Block
type: Class
subclass of: Block Statement
comment: A finally block

ForEach Statement
type: Class
subclass of: Loop Statement
subclass of: Restriction
  on property: has subexpression
  qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has variable
  qualified cardinality: 1
  on class: Variable
comment: A for-each statement, also known as enhanced for statement

For Statement
type: Class
subclass of: Loop Statement
subclass of: Restriction
  on property: has condition
  qualified cardinality: 1
  on class: Expression
comment: A for statement

Gradle Project
type: Class
subclass of: Project
comment: A gradle project

If-then-else statement
type: Class
subclass of: Decision Making Statement
subclass of: Restriction
  on property: has condition
  qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has then branch
  qualified cardinality: 1
  on class: Statement
disjoint with: Switch Statement
comment: A If-then-else statement

Interface
type: Class
subclass of: Complex Type
subclass of: Restriction
  on property: extends
  all values from: Interface
comment: An interface

Labeled Block
type: Class
subclass of: Block Statement
subclass of: Restriction
  on property: next
  all values from: Labeled Block
comment: A labeled block of code, namely a case-labeled block or a default-labeled block

Library
type: Class
subclass of: Restriction
  on property: name
  qualified cardinality: 1
  on data range: string
comment: A library

Local Variable
type: Class
subclass of: Variable
subclass of: Restriction
  on property: is declared by
  all values from: Executable
comment: A local variable

Local Variable Declaration Statement
type: Class
subclass of: Variable Declaration
comment: A local variable declaration

Loop Statement
type: Class
subclass of: Control Flow Statement
subclass of: Restriction
  on property: has body
  max qualified cardinality: 1
  on class: Block Statement
comment: A loop statement.

Maven Project
type: Class
subclass of: Project
comment: A maven project

Method
type: Class
subclass of: Executable
comment: A Method

Method Invocation Expression
type: Class
subclass of: Executable invocation expression
comment: A method call

Modifiable
type: Class
subclass of: Code Element
subclass of: Restriction
  on property: has modifier
  some values from: Modifier
subclass of: Restriction
  on property: has modifier
  qualified cardinality: 1
  on class: Access Modifier
comment: An element that can have a modifier

Modifier
type: Class
subclass of: Code Element
comment: A modifier

Package
type: Class
subclass of: Code Element
comment: A Package

Parameter
type: Class
subclass of: Variable
subclass of: Restriction
  on property: position
  qualified cardinality: 1
  on data range: int
comment: A formal parameter

Parameterized Type
type: Class
subclass of: Type
subclass of: Restriction
  on property: has actual type argument
  some values from: Type Argument
subclass of: Restriction
  on property: has generic type
  qualified cardinality: 1
  on class: Complex Type
comment: A parameterized type is a particular parameterization of a generic type denoted by a specified list of type arguments

Primitive Type
type: Class
subclass of: Type
comment: A primitive type

Project
type: Class
comment: A project

Return Statement
type: Class
subclass of: Branching Statement
comment: A return statement

Statement
type: Class
subclass of: Code Element
subclass of: Restriction
  on property: line
  qualified cardinality: 1
  on data range: int
subclass of: Restriction
  on property: position
  qualified cardinality: 1
  on data range: int
comment: A generic statement

Switch Statement
type: Class
subclass of: Decision Making Statement
subclass of: Restriction
  on property: has subexpression
  qualified cardinality: 1
  on class: Expression
comment: A switch statement

Synchronized Statement
type: Class
subclass of: Statement
comment: A synchronized statement, that is a statement that acquires a mutual-exclusion lock on behalf of the executiing-thread, executes a block, then release the lock. In java it is of the form: synchronized <Expression> <Block>

Throw Statement
type: Class
subclass of: Statement
subclass of: Restriction
  on property: has thrown expression
  qualified cardinality: 1
  on class: Expression
comment: A throw statement, that is a statement that causes an exception to be thrown

Try Statement
type: Class
subclass of: Statement
subclass of: Restriction
  on property: has body
  max qualified cardinality: 1
  on class: Block Statement
comment: A try statement

Type
type: Class
subclass of: Code Element
comment: A type

Type Argument
type: Class
subclass of: Code Element
comment: This class defines the actual type argument of a parameterized type

Type Variable
type: Class
subclass of: Type
subclass of: Restriction
  on property: extends
  all values from: Class
    union of: Class
    union of: Interface
    union of: Parameterized Type
comment: A type variable is an unqualified identifier used as a type. It is introduced by the declaration of a generic class, interface, method, or constructor

Variable
type: Class
subclass of: Code Element
subclass of: Restriction
  on property: has type
  qualified cardinality: 1
  on class: Type
comment: A variable

Variable Declaration
type: Class
subclass of: Declaration statement
comment: A statement that represents the declaration of a variable

While Statement
type: Class
subclass of: Loop Statement
subclass of: Restriction
  on property: has condition
  qualified cardinality: 1
  on class: Expression
comment: A while statement

Wildcard
type: Class
subclass of: Type
subclass of: Restriction
  on property: extends
  all values from: Class
    union of: Class
    union of: Interface
    union of: Parameterized Type
subclass of: Restriction
  on property: has super bound
  all values from: Type
comment: A wildcard

Abstract
type: NamedIndividual
type: Modifier
comment: The abstract modifier

Boolean
type: NamedIndividual
type: Primitive Type
comment: The boolean type

Byte
type: NamedIndividual
type: Primitive Type
comment: The byte type

Character
type: NamedIndividual
type: Primitive Type
comment: The char type

Default
type: NamedIndividual
type: Access Modifier
comment: The default modifier

Double
type: NamedIndividual
type: Primitive Type
comment: The double type

Final
type: NamedIndividual
type: Modifier
comment: The final modifier

Float
type: NamedIndividual
type: Primitive Type
comment: The float type

Integer
type: NamedIndividual
type: Primitive Type
comment: The int type

Long
type: NamedIndividual
type: Primitive Type
comment: The long type

Private
type: NamedIndividual
type: Access Modifier
comment: The private modifier

Protected
type: NamedIndividual
type: Access Modifier
comment: The protected modifier

Public
type: NamedIndividual
type: Access Modifier
comment: The public modifier

Short
type: NamedIndividual
type: Primitive Type
comment: The short type

Static
type: NamedIndividual
type: Modifier
comment: The static modifier

Synchronized
type: NamedIndividual
type: Modifier
comment: The synchronized modifier

Volatile
type: NamedIndividual
type: Modifier
comment: The volatile modifier