OpaqueExpression
================

OCL specifies ExpressionInOcl extends OpaqueExpression
-- unwelcome OpaqueExprrdsio content; awkward re-classing
1st pivot rearrangement deletes OpaqueExpression, merges into ExpressionInOCL
-- two phase specification/query
Next pivot rearrangement:

ExpressionInOCL extends (abstract)LanguageExpression extends ValueSpecification
OpaqueExpression extends (abstract)LanguageExpression extends ValueSpecification
[ExpressionInALF extends (abstract)LanguageExpression extends ValueSpecification]

-- two phase now type enforced
- generic LanguageExpression/ValueSpecification needs conversion to ExpressionInOCL
- specific ExpressionInOCL is already parsed

--------------------------------

ValueSpecifcation any abstract => abstract
Visitable => RedefineableSignature
Package::ownedType => most derived

Behavior
    delete isReentrant,ownedParameter,postcondition,precondition,redefinedBehavior
    add transition
Class
    inherits TemplateableElement
    add isFinalSpecialization,class,classifierTemplateParameter,general,inheritedMember,instanceSpecification,nestedClassifier,nestingClass,part,redefinedClassifier,region,state,transition
    delete nestedType,ownedBehavior
Constraint
    add bodyContext,postContext,preContext
    adjust constrainedElement,context
    delete specification
Element
    add constraint


    