// Copied from org.eclipse.ocl.ecore.tests.DocumentationExamples.java EOperation oper = null; for (EOperation next : EcorePackage.Literals.EMODEL_ELEMENT.getEOperations()) { if ("getEAnnotation".equals(next.getName())) { oper = next; break; } } // define a post-condition specifying the value of EModelElement::getEAnnotation(EString). // This operation environment includes variables representing the operation // parameters (in this case, only "source : String") and the operation result helper.setOperationContext(EcorePackage.Literals.ECLASS, oper); Constraint body = helper.createPostcondition( "result = self.eAnnotations->any(ann | ann.source = source)"); // define a derivation constraint for the EReference::eReferenceType property helper.setAttributeContext( EcorePackage.Literals.EREFERENCE, EcorePackage.Literals.EREFERENCE__EREFERENCE_TYPE); Constraint derive = helper.createDerivedValueExpression( "self.eType->any(true).oclAsType(EClass)");