/**
 */
package org.etsi.mts.tdl;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Packageable Element</b></em>'.
 * <!-- end-user-doc -->
 *
 *
 * @see org.etsi.mts.tdl.tdlPackage#getPackageableElement()
 * @model abstract="true"
 * @generated
 */
public interface PackageableElement extends NamedElement
{
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='             \n                if (self.getElementNamed(n).oclIsUndefined()) then\n                    false\n                else\n                    self.conformsTo(self.getElementNamed(n)) \n                endif\n            '"
	 * @generated
	 */
	Boolean conformsTo(String n);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='\n                self.oclType().allInstances()-&gt;select(e | e.name = n)-&gt;asOrderedSet()-&gt;first()\n            '"
	 * @generated
	 */
	PackageableElement getElementNamed(String n);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='\n            if (self = n) then\n                true\n            else\n                if (self.oclIsKindOf(AnnotationType) and not self.oclAsType(AnnotationType).extension.oclIsUndefined()) then\n                    self.oclAsType(AnnotationType).extension.isExtending(n)\n                else\n                    if (self.oclIsKindOf(ComponentType) and not self.oclAsType(ComponentType).extension.oclIsUndefined()) then\n                        self.oclAsType(ComponentType).extension.isExtending(n)\n                    else\n                        if (self.oclIsKindOf(GateType) and not self.oclAsType(GateType).extension.oclIsUndefined()) then\n                            self.oclAsType(GateType).extension.isExtending(n)\n                        else\n                            if (self.oclIsKindOf(StructuredDataType)) then\n                                self.oclAsType(StructuredDataType).extension-&gt;exists(ex | ex.isExtending(n))\n                            else\n                                if (self.oclIsKindOf(SimpleDataType) and not self.oclAsType(SimpleDataType).extension.oclIsUndefined()) then\n                                    self.oclAsType(SimpleDataType).extension.isExtending(n)\n                                else\n                                    false\n                                endif\n                            endif\n                        endif\n                    endif\n                endif\n            endif\n            '"
	 * @generated
	 */
	Boolean conformsTo(PackageableElement n);

} // PackageableElement
