## Uses of Interface
org.eclipse.rdf4j.query.algebra.QueryModelNode

- Packages that use QueryModelNode
  Package | Description
  --- | ---
  org.eclipse.rdf4j.federated.algebra |
  org.eclipse.rdf4j.federated.optimizer |
  org.eclipse.rdf4j.query.algebra | Abstract Query Algebra model.
  org.eclipse.rdf4j.query.algebra.evaluation.impl |
  org.eclipse.rdf4j.query.algebra.helpers |
  org.eclipse.rdf4j.query.parser.sparql | The rdf4j SPARQL 1.1 parser.
  org.eclipse.rdf4j.sail.federation.algebra |
  org.eclipse.rdf4j.sail.federation.optimizers |
  org.eclipse.rdf4j.sail.lucene | A Sail implementation that supports full-text indexing via the Lucene API.

- - ### Uses of QueryModelNode in org.eclipse.rdf4j.federated.algebra

    Subinterfaces of QueryModelNode in org.eclipse.rdf4j.federated.algebra
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `ExclusiveTupleExpr` Interface representing nodes that can exclusively be evaluated at a single `StatementSource`.
    `interface` | `ExclusiveTupleExprRenderer` A specialization of `ExclusiveTupleExpr` which provides definitions how the expressions can be rendered to a sub-query.
    `interface` | `FedXTupleExpr` Interface marking known FedX algebra nodes.
    `interface` | `FilterTuple` Expressions implementing this interface can apply some `FilterValueExpr` during evaluation.
    `interface` | `FilterValueExpr` Interface to indicate filter expressions.
    `interface` | `StatementTupleExpr` Interface for any expression that can be evaluated

    Classes in org.eclipse.rdf4j.federated.algebra that implement QueryModelNode
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BoundFiltersNode` A `QueryModelNode` for printing the bound filter vars (e.g.
    `class` | `CheckStatementPattern` A statement pattern with no free variables when provided with some particular BindingSet in evaluate.
    `class` | `ConjunctiveFilterExpr` ConjunctiveFilterExpr maintains a list of conjunctive (i.e.
    `class` | `EmptyNJoin` Algebra construct representing an empty join.
    `class` | `EmptyNUnion` Algebra construct representing an empty union.
    `class` | `EmptyStatementPattern` EmptyStatementPattern represents a statement that cannot produce any results for the registered endpoints.
    `class` | `ExclusiveArbitraryLengthPath` An `ArbitraryLengthPath` node which can be evaluated at a single node.
    `class` | `ExclusiveGroup` Represents a group of `ExclusiveTupleExpr` that can only produce results at a single endpoint, the `StatementSource`.
    `class` | `ExclusiveStatement` Represents a StatementPattern that can only produce results at a single endpoint, the owner.
    `class` | `FedXLeftJoin` Abstraction of `LeftJoin` to maintain the `QueryInfo`.
    `class` | `FedXService`
    `class` | `FedXStatementPattern` Base class providing all common functionality for FedX StatementPatterns
    `class` | `FilterExpr` FilterExpr maintains information for a particular FILTER expression.
    `class` | `NJoin` A tuple expression that represents an nary-Join.
    `class` | `NTuple` Base class for any nary-tuple expression
    `class` | `NUnion` A tuple expression that represents an nary-Union.
    `class` | `PassThroughTupleExpr` Marker `TupleExpr` that is used from `FedXTupleQuery.evaluate(TupleQueryResultHandler)` to allow for passing through of results to the handler.
    `class` | `PrecompiledQueryNode` Node representing a precompiled query.
    `class` | `SingleSourceQuery` A query which has a single relevant source.
    `class` | `StatementSource` A structure representing a relevant source for some expression.
    `class` | `StatementSourcePattern` Represents statements that can produce results at a some particular endpoints, the statement sources.
    `class` | `TrueStatementPattern` A TrueStatementPattern represents a stmt with no free variables which in addition is available at one of the provided sources.

    Methods in org.eclipse.rdf4j.federated.algebra that return QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `QueryModelNode` | CheckStatementPattern.`getParentNode()`

    Methods in org.eclipse.rdf4j.federated.algebra with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `void` | CheckStatementPattern.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | NTuple.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | CheckStatementPattern.`replaceWith(QueryModelNode replacement)`
    `void` | CheckStatementPattern.`setParentNode(QueryModelNode parent)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.federated.optimizer

    Methods in org.eclipse.rdf4j.federated.optimizer with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `void` | FilterOptimizer.FilterExprInsertVisitor.`meetOther(QueryModelNode node)`
    `void` | StatementGroupAndJoinOptimizer.`meetOther(QueryModelNode node)`
    `void` | LimitOptimizer.`meetOther(QueryModelNode node)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.query.algebra

    Subinterfaces of QueryModelNode in org.eclipse.rdf4j.query.algebra
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `AggregateOperator` An operator that returns aggregates values.
    `interface` | `TupleExpr` An expression that evaluates to RDF tuples.
    `interface` | `UpdateExpr` An expression that executes an update.
    `interface` | `ValueExpr` An expressions that evaluates to Value objects.

    Classes in org.eclipse.rdf4j.query.algebra that implement QueryModelNode
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractAggregateOperator` Base class for shared functionality of aggregate operators (e.g.
    `class` | `AbstractQueryModelNode` Base implementation of `QueryModelNode`.
    `class` | `Add`
    `class` | `AggregateOperatorBase` Deprecated. since 2.0. Use `AbstractAggregateOperator` instead.
    `class` | `And` A boolean AND operator operating on two boolean expressions.
    `class` | `ArbitraryLengthPath` A tuple expression that matches a path of arbitrary length against an RDF graph.
    `class` | `Avg` The AVG operator as defined in http://www.w3.org/TR/sparql11-query/#aggregates.
    `class` | `BinaryTupleOperator` An abstract superclass for binary tuple operators which, by definition, has two arguments.
    `class` | `BinaryValueOperator` An abstract superclass for binary value operators which, by definition, has two arguments.
    `class` | `BindingSetAssignment`
    `class` | `BNodeGenerator` A BNode generator, which generates a new BNode each time it needs to supply a value.
    `class` | `Bound` The BOUND function, as defined in SPARQL Query Language for RDF; checks if a variable is bound.
    `class` | `Clear`
    `class` | `Coalesce`
    `class` | `Compare` A comparison between two values.
    `class` | `CompareAll`
    `class` | `CompareAny`
    `class` | `CompareSubQueryValueOperator`
    `class` | `Copy`
    `class` | `Count`
    `class` | `Create`
    `class` | `Datatype` The DATATYPE function, as defined in SPARQL Query Language for RDF.
    `class` | `DeleteData`
    `class` | `DescribeOperator`
    `class` | `Difference` The MINUS set operator, which returns the result of the left tuple expression, except for the results that are also returned by the right tuple expression.
    `class` | `Distinct`
    `class` | `EmptySet` A tuple expression that contains zero solutions.
    `class` | `Exists` Checks whether the wrapped Query produces any results.
    `class` | `Extension` An extension operator that can be used to add bindings to solutions whose values are defined by `value expressions`.
    `class` | `ExtensionElem`
    `class` | `Filter` The FILTER operator, as defined in SPARQL Query Language for RDF.
    `class` | `FunctionCall` A call to an (external) function that operates on zero or more arguments.
    `class` | `Group` A tuple operator that groups tuples that have a specific set of equivalent variable bindings, and that can apply aggregate functions on the grouped results.
    `class` | `GroupConcat` The GROUP_CONCAT operator as defined in http://www.w3.org/TR/sparql11-query/#aggregates
    `class` | `GroupElem` A tuple operator that groups tuples that have a specific set of equivalent variable bindings, and that can apply aggregate functions on the grouped results.
    `class` | `If` The IF function, as defined in SPARQL 1.1 Query.
    `class` | `In` Checks whether a certain value is contained in a set of results produced by a query.
    `class` | `InsertData`
    `class` | `Intersection` The INTERSECT set operator, which returns the intersection of the result sets of two tuple expressions.
    `class` | `IRIFunction` The IRI function, as defined in SPARQL 1.1 Query Language for RDF.
    `class` | `IsBNode`
    `class` | `IsLiteral`
    `class` | `IsNumeric` IsNumeric - Boolean operator determining if the supplied expression represents a numeric value.
    `class` | `IsResource`
    `class` | `IsURI`
    `class` | `Join` A natural join between two tuple expressions.
    `class` | `Label` The LABEL function, which selects the label of literals.
    `class` | `Lang` The LANG function, as defined in SPARQL Query Language for RDF.
    `class` | `LangMatches` Checks whether a language tag (e.g.
    `class` | `LeftJoin` The LeftJoin operator, as defined in SPARQL Query Language for RDF.
    `class` | `Like` Compares the string representation of a value expression to a pattern.
    `class` | `ListMemberOperator` ValueOperator that verifies if the first of its arguments occurs in any of the subsequent arguments.
    `class` | `Load`
    `class` | `LocalName` The LOCAL NAME function, which selects the local name of URIs.
    `class` | `MathExpr` A mathematical expression consisting an operator and two arguments.
    `class` | `Max`
    `class` | `Min`
    `class` | `Modify`
    `class` | `Move`
    `class` | `MultiProjection` A "multi-projection" that can produce multiple solutions from a single set of bindings.
    `class` | `Namespace` The NAMESPACE function, which selects the namespace of URIs.
    `class` | `NAryValueOperator` An abstract superclass for N-ary value operators.
    `class` | `Not` A boolean NOT operator operating on a boolean expressions.
    `class` | `Or` A boolean OR operator operating on two boolean expressions.
    `class` | `Order` An order operator that can be used to order bindings as specified by a set of value expressions.
    `class` | `OrderElem`
    `class` | `Projection` A generalized projection (allowing the bindings to be renamed) on a tuple expression.
    `class` | `ProjectionElem`
    `class` | `ProjectionElemList`
    `class` | `QueryModelNodeBase` Deprecated. since 2.0. Use `AbstractQueryModelNode` instead.
    `class` | `QueryRoot` A semantics-less query model node that is used as the root of query model trees.
    `class` | `Reduced`
    `class` | `Regex` Compares the string representation of a value expression to a pattern.
    `class` | `SameTerm` Checks RDF term equality.
    `class` | `Sample` The SAMPLE operator as defined in http://www.w3.org/TR/sparql11-query/#aggregates
    `class` | `Service` The SERVICE keyword as defined in SERVICE definition.
    `class` | `SingletonSet` A tuple expression that contains exactly one solution with zero bindings.
    `class` | `Slice` The SLICE operator, as defined in SPARQL Query Language for RDF.
    `class` | `StatementPattern` A tuple expression that matches a statement pattern against an RDF graph.
    `class` | `Str` The STR function, as defined in SPARQL Query Language for RDF; returns the label of literals or the string representation of URIs.
    `class` | `SubQueryValueOperator`
    `class` | `Sum` The SUM operator as defined in http://www.w3.org/TR/sparql11-query/#aggregates
    `class` | `TripleRef` Triple lookup reference.
    `class` | `TupleFunctionCall` A call to a TupleFunction.
    `class` | `UnaryTupleOperator` An abstract superclass for unary tuple operators which, by definition, has one argument.
    `class` | `UnaryValueOperator` An abstract superclass for unary value operators which, by definition, has one argument.
    `class` | `Union` The UNION set operator, which return the union of the result sets of two tuple expressions.
    `class` | `ValueConstant` A ValueExpr with a constant value.
    `class` | `ValueExprTripleRef`
    `class` | `Var` A variable that can contain a Value.
    `class` | `ZeroLengthPath` A tuple expression that matches a path of length zero against an RDF graph.

    Methods in org.eclipse.rdf4j.query.algebra with type parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `protected <T extends QueryModelNode> boolean` | AbstractQueryModelNode.`replaceNodeInList(List<T> list, QueryModelNode current, QueryModelNode replacement)`

    Methods in org.eclipse.rdf4j.query.algebra that return QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `QueryModelNode` | QueryModelNode.`clone()` Returns a (deep) clone of this query model node.
    `QueryModelNode` | QueryRoot.`getParentNode()`
    `QueryModelNode` | QueryModelNode.`getParentNode()` Gets the node's parent.
    `QueryModelNode` | AbstractQueryModelNode.`getParentNode()`

    Methods in org.eclipse.rdf4j.query.algebra with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `void` | QueryModelVisitor.`meetOther(QueryModelNode node)`
    `void` | TupleFunctionCall.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | TripleRef.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | ZeroLengthPath.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Service.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | ProjectionElemList.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Projection.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | OrderElem.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Order.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | MultiProjection.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Move.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Modify.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Load.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | LeftJoin.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | If.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | GroupElem.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Group.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | FunctionCall.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Filter.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | ExtensionElem.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Extension.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | BinaryTupleOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Copy.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | SubQueryValueOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | CompareSubQueryValueOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | NAryValueOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Clear.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Bound.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | UnaryValueOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | ArbitraryLengthPath.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | StatementPattern.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | BinaryValueOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | Add.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | UnaryTupleOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `void` | QueryModelNode.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)` Replaces one of the child nodes with a new node.
    `void` | AbstractQueryModelNode.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)` Default implementation of `replaceChildNode(QueryModelNode, QueryModelNode)` that throws an `IllegalArgumentException` indicating that `current` is not a child node of this node.
    `void` | Create.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`
    `protected <T extends QueryModelNode> boolean` | AbstractQueryModelNode.`replaceNodeInList(List<T> list, QueryModelNode current, QueryModelNode replacement)`
    `void` | QueryModelNode.`replaceWith(QueryModelNode replacement)` Substitutes this node with a new node in the query model tree.
    `void` | AbstractQueryModelNode.`replaceWith(QueryModelNode replacement)` Default implementation of `replaceWith(QueryModelNode)` that throws an `IllegalArgumentException` indicating that `current` is not a child node of this node.
    `void` | QueryRoot.`setParentNode(QueryModelNode parent)`
    `void` | QueryModelNode.`setParentNode(QueryModelNode parent)` Sets the node's parent.
    `void` | AbstractQueryModelNode.`setParentNode(QueryModelNode parent)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.query.algebra.evaluation.impl

    Classes in org.eclipse.rdf4j.query.algebra.evaluation.impl that implement QueryModelNode
    Modifier and Type | Class and Description
    --- | ---
    `class` | `ExternalSet` Deprecated. since 3.0.

    Methods in org.eclipse.rdf4j.query.algebra.evaluation.impl with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `protected long` | StrictEvaluationStrategy.`getLimit(QueryModelNode node)` Returns the limit of the current variable bindings before any further projection.
    `protected boolean` | StrictEvaluationStrategy.`isReducedOrDistinct(QueryModelNode node)`
    `protected void` | TupleFunctionEvaluationStatistics.TupleFunctionCardinalityCalculator.`meetNode(QueryModelNode node)`
    `protected void` | EvaluationStatistics.CardinalityCalculator.`meetNode(QueryModelNode node)`
    `protected void` | FilterOptimizer.FilterRelocator.`meetNode(QueryModelNode node)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.query.algebra.helpers

    Methods in org.eclipse.rdf4j.query.algebra.helpers with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | QueryModelTreeToGenericPlanNode.`meetNode(QueryModelNode node)`
    `protected void` | BGPCollector.`meetNode(QueryModelNode node)`
    `protected void` | QueryModelTreePrinter.`meetNode(QueryModelNode node)`
    `protected void` | QueryModelNodeReplacer.`meetNode(QueryModelNode node)` Deprecated.
    `protected void` | AbstractQueryModelVisitor.`meetNode(QueryModelNode node)` Method called by all of the other `meet` methods that are not overridden in subclasses.
    `void` | AbstractQueryModelVisitor.`meetOther(QueryModelNode node)`
    `static String` | QueryModelTreePrinter.`printTree(QueryModelNode node)`
    `static Set<String>` | VarNameCollector.`process(QueryModelNode node)`
    `static List<StatementPattern>` | StatementPatternCollector.`process(QueryModelNode node)`
    `void` | QueryModelNodeReplacer.`removeChildNode(QueryModelNode parent, QueryModelNode former)` Deprecated.
    `void` | QueryModelNodeReplacer.`removeNode(QueryModelNode former)` Deprecated.
    `void` | QueryModelNodeReplacer.`replaceChildNode(QueryModelNode parent, QueryModelNode former, QueryModelNode replacement)` Deprecated.
    `void` | QueryModelNodeReplacer.`replaceNode(QueryModelNode former, QueryModelNode replacement)` Deprecated.

    Constructors in org.eclipse.rdf4j.query.algebra.helpers with parameters of type QueryModelNode
    Constructor and Description
    `QueryModelTreeToGenericPlanNode(QueryModelNode topTupleExpr)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.query.parser.sparql

    Methods in org.eclipse.rdf4j.query.parser.sparql with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `void` | TripleRefCollector.`meetOther(QueryModelNode node)`
    `static Map<String,Object>` | TripleRefCollector.`process(QueryModelNode node)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.sail.federation.algebra

    Classes in org.eclipse.rdf4j.sail.federation.algebra with type parameters of type QueryModelNode
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractNaryOperator<Expr extends QueryModelNode>` An abstract superclass for operators which have (zero or more) arguments.

    Classes in org.eclipse.rdf4j.sail.federation.algebra that implement QueryModelNode
    Modifier and Type | Class and Description
    --- | ---
    `class` | `AbstractNaryOperator<Expr extends QueryModelNode>` An abstract superclass for operators which have (zero or more) arguments.
    `class` | `AbstractNaryTupleOperator` An abstract superclass for n-ary tuple operators which have one or more arguments.
    `class` | `NaryJoin` A natural join between two tuple expressions.
    `class` | `OwnedTupleExpr` Indicates that the argument should be evaluated in a particular member.

    Methods in org.eclipse.rdf4j.sail.federation.algebra with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `void` | AbstractNaryOperator.`replaceChildNode(QueryModelNode current, QueryModelNode replacement)`

    Constructors in org.eclipse.rdf4j.sail.federation.algebra with parameters of type QueryModelNode
    Constructor and Description
    `AbstractNaryOperator(Expr... args)` Creates a new n-ary operator.

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.sail.federation.optimizers

    Methods in org.eclipse.rdf4j.sail.federation.optimizers with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | PrepareOwnedTupleExpr.`meetNode(QueryModelNode node)`
    `void` | QueryModelPruner.TreeSanitizer.`meetOther(QueryModelNode node)`
    `void` | PrepareOwnedTupleExpr.`meetOther(QueryModelNode node)`
    `void` | OwnedTupleExprPruner.`meetOther(QueryModelNode node)`
    `void` | FederationJoinOptimizer.`meetOther(QueryModelNode node)` Deprecated.
    `void` | QueryMultiJoinOptimizer.JoinVisitor.`meetOther(QueryModelNode node)`
    `void` | EvaluationStatistics.CardinalityCalculator.`meetOther(QueryModelNode node)`

  - ### Uses of QueryModelNode in org.eclipse.rdf4j.sail.lucene

    Methods in org.eclipse.rdf4j.sail.lucene that return QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `QueryModelNode` | GeoRelationQuerySpec.`getParentQueryModelNode()`
    `QueryModelNode` | DistanceQuerySpec.`getParentQueryModelNode()`
    `QueryModelNode` | QuerySpec.`getParentQueryModelNode()`
    `QueryModelNode` | SearchQueryEvaluator.`getParentQueryModelNode()`
    `QueryModelNode` | GeoRelationQuerySpec.`removeQueryPatterns()`
    `QueryModelNode` | DistanceQuerySpec.`removeQueryPatterns()`
    `QueryModelNode` | QuerySpec.`removeQueryPatterns()`
    `QueryModelNode` | SearchQueryEvaluator.`removeQueryPatterns()` Removes the query patterns and returns a placeholder where the query results could be placed.

    Methods in org.eclipse.rdf4j.sail.lucene with parameters of type QueryModelNode
    Modifier and Type | Method and Description
    --- | ---
    `void` | GeoRelationQuerySpec.`setFunctionParent(QueryModelNode functionParent)`

Copyright © 2015-2021 Eclipse Foundation. All Rights Reserved.