Abstract API for OCL AST utilities and extensions of the UML metamodel.

## Package Specification

This package defines a number of utility interfaces that are mixed in to the AST model defined in the {@link org.eclipse.ocl.expressions} and {@link org.eclipse.ocl.types} packages, as well as UML metamodel extensions and related services. These utilities include:

- a {@link org.eclipse.ocl.utilities.Visitor Visitor} pattern definition
- {@linkplain org.eclipse.ocl.utilities.Visitable visitor accept} protocol
- tracking from where in the source text an {@linkplain org.eclipse.ocl.utilities.ASTNode AST node} was parsed
- an emulation of the UML {@link org.eclipse.ocl.utilities.TypedElement TypedElement} metaclass
- access to the name and operations of the types {@linkplain org.eclipse.ocl.utilities.PredefinedType pre-defined} by OCL

These concerns are orthogonal to the definition of the abstract syntax model and do not affect XMI serialization.

This package also defines the {@link org.eclipse.ocl.utilities.ExpressionInOCL} metaclass that extends the UML `OpaqueExpression` metaclass to support embedding of OCL expressions in models.

Also of note is the {@link org.eclipse.ocl.utilities.UMLReflection} interface that provides introspection and construction of the model concepts that OCL re-uses from the UML. Providers of OCL metamodel bindings (i.e., {@link org.eclipse.ocl.Environment}s) are required to implement this interface to manipulate metaclasses either from the metamodel that they are binding, or that they define themselves to implement these concepts.

@see org.eclipse.ocl.expressions @see org.eclipse.ocl.types