<?xml version='1.0' ?>
<xmi:XMI xmlns:xmi="http://www.schema.omg.org/spec/XMI/2.1" xmlns:emof="http://schema.omg.org/spec/MOF/2.0/emof.xml" xmi:version="2.1">
  <emof:Package xmi:id="MOF2Text" name="MOF2Text" uri="MOF2Text">
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.TemplateInvocation" name="TemplateInvocation" superClass="MOF2Text.TemplateExpression">
      <ownedAttribute xmi:id="MOF2Text.TemplateInvocation.definition" name="definition" type="MOF2Text.Template"/>
      <ownedAttribute xmi:id="MOF2Text.TemplateInvocation.arguments" name="arguments" upper="*" type="EssentialOCL.OclExpression" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.TemplateInvocation.before" name="before" type="EssentialOCL.OclExpression" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.TemplateInvocation.each" name="each" type="EssentialOCL.OclExpression" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.TemplateInvocation.after" name="after" type="EssentialOCL.OclExpression" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.Template" name="Template" superClass="MOF2Text.Block MOF2Text.ModuleElement">
      <ownedAttribute xmi:id="MOF2Text.Template.overrides" name="overrides" upper="*" type="MOF2Text.Template" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.Template.parameter" name="parameter" upper="*" type="EMOF.Parameter" isComposite="true" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.Template.guard" name="guard" type="EssentialOCL.OclExpression" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.QueryInvocation" name="QueryInvocation" superClass="MOF2Text.TemplateExpression">
      <ownedAttribute xmi:id="MOF2Text.QueryInvocation.definition" name="definition" type="MOF2Text.Query"/>
      <ownedAttribute xmi:id="MOF2Text.QueryInvocation.arguments" name="arguments" upper="*" type="EssentialOCL.OclExpression" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.Module" name="Module" superClass="EMOF.Package">
      <ownedAttribute xmi:id="MOF2Text.Module.extends" name="extends" upper="*" type="MOF2Text.Module" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.Module.ownedModuleElement" name="ownedModuleElement" upper="*" type="MOF2Text.ModuleElement" isComposite="true"/>
      <ownedAttribute xmi:id="MOF2Text.Module.input" name="input" upper="*" type="QVTBase.TypedModel"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.ProtectedAreaBlock" name="ProtectedAreaBlock" superClass="MOF2Text.Block">
      <ownedAttribute xmi:id="MOF2Text.ProtectedAreaBlock.marker" name="marker" type="EssentialOCL.OclExpression"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.ModuleElement" name="ModuleElement" superClass="EMOF.NamedElement">
       <ownedAttribute xmi:id="MOF2Text.ModuleElement.isPublic" name="isPublic" type="emof.Boolean" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.TemplateExpression" name="TemplateExpression" superClass="EssentialOCL.OclExpression"/>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.InitSection" name="InitSection">
      <ownedAttribute xmi:id="MOF2Text.InitSection.variable" name="variable" upper="*" type="EssentialOCL.Variable"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.Block" name="Block" superClass="MOF2Text.TemplateExpression">
      <ownedAttribute xmi:id="MOF2Text.Block.body" name="body" upper="*" type="MOF2Text.TemplateExpression" isComposite="true" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.Block.init" name="init" type="MOF2Text.InitSection" isComposite="true" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.ForBlock" name="ForBlock" superClass="MOF2Text.Block">
      <ownedAttribute xmi:id="MOF2Text.ForBlock.loopVariable" name="loopVariable" type="EssentialOCL.Variable"/>
      <ownedAttribute xmi:id="MOF2Text.ForBlock.iterSet" name="iterSet" type="EssentialOCL.OclExpression"/>
      <ownedAttribute xmi:id="MOF2Text.ForBlock.before" name="before" type="EssentialOCL.OclExpression" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.ForBlock.after" name="after" type="EssentialOCL.OclExpression" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.ForBlock.each" name="each" type="EssentialOCL.OclExpression" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.ForBlock.guard" name="guard" type="EssentialOCL.OclExpression" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.LetBlock" name="LetBlock" superClass="MOF2Text.Block">
      <ownedAttribute xmi:id="MOF2Text.LetBlock.elseLet" name="elseLet" upper="*" type="MOF2Text.LetBlock" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.LetBlock.else" name="else" type="MOF2Text.Block" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.LetBlock.letExpr" name="letExpr" type="EssentialOCL.OclExpression"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.FileBlock" name="FileBlock" superClass="MOF2Text.Block">
      <ownedAttribute xmi:id="MOF2Text.FileBlock.openMode" name="openMode" type="MOF2Text.AppendModeKind" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.FileBlock.fileUrl" name="fileUrl" type="EssentialOCL.OclExpression"/>
      <ownedAttribute xmi:id="MOF2Text.FileBlock.uniqId" name="uniqId" type="EssentialOCL.OclExpression" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.TraceBlock" name="TraceBlock" superClass="MOF2Text.Block">
      <ownedAttribute xmi:id="MOF2Text.TraceBlock.modelElement" name="modelElement" type="EssentialOCL.OclExpression"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.Macro" name="Macro" superClass="MOF2Text.Block MOF2Text.ModuleElement">
      <ownedAttribute xmi:id="MOF2Text.Macro.parameter" name="parameter" upper="*" type="EMOF.Parameter" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.MacroInvocation" name="MacroInvocation" superClass="MOF2Text.TemplateExpression">
      <ownedAttribute xmi:id="MOF2Text.MacroInvocation.Macro" name="definition" type="MOF2Text.Macro"/>
      <ownedAttribute xmi:id="MOF2Text.MacroInvocation.arguments" name="arguments" upper="*" type="EssentialOCL.OclExpression" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.IfBlock" name="IfBlock" superClass="MOF2Text.Block">
      <ownedAttribute xmi:id="MOF2Text.IfBlock.ifExpr" name="ifExpr" type="EssentialOCL.OclExpression"/>
      <ownedAttribute xmi:id="MOF2Text.IfBlock.else" name="else" type="MOF2Text.Block" lower="0"/>
      <ownedAttribute xmi:id="MOF2Text.IfBlock.elseIf" name="elseIf" upper="*" type="MOF2Text.IfBlock" lower="0"/>
    </ownedType>
    <ownedType xmi:type="emof:Enumeration" xmi:id="MOF2Text.AppendModeKind" name="AppendModeKind">
      <ownedLiteral xmi:id="MOF2Text.AppendModeKind.Append" name="Append"/>
      <ownedLiteral xmi:id="MOF2Text.AppendModeKind.OverWrite" name="OverWrite"/>
    </ownedType>
    <ownedType xmi:type="emof:Class" xmi:id="MOF2Text.Query" name="Query" superClass="MOF2Text.ModuleElement QVTBase.Function"/>

  
<ownedType xmi:type="emof:Class" xmi:id="QVTBase.Function" name="Function" href="http://www.omg.org/spec/MOF/20070704/qvt.xml#Function"/>

<ownedType xmi:type="emof:Class" xmi:id="EMOF.NamedElement" name="NamedElement" href="http://www.schema.omg.org/spec/MOF/2.0/emof.xml#NamedElement"/>

<ownedType xmi:type="emof:Class" xmi:id="EssentialOCL.Variable" name="Variable" href="http://www.omg.org/spec/MOF/20060501/essentialocl.xml#Variable"/>

<ownedType xmi:type="emof:Class" xmi:id="EssentialOCL.OclExpression" name="OclExpression" href="http://www.omg.org/spec/MOF/20060501/essentialocl.xml#OclExpression"/>

<ownedType xmi:type="emof:Class" xmi:id="EMOF.Package" name="Package" href="http://www.schema.omg.org/spec/MOF/2.0/emof.xml#Package"/>

 <ownedType xmi:type="emof:Class" xmi:id="EMOF.Parameter" name="Parameter" href="http://www.schema.omg.org/spec/MOF/2.0/emof.xml#Parameter"/>

<ownedType xmi:type="emof:Class" xmi:id="QVTBase.TypedModel" name="TypedModel" href="http://www.omg.org/spec/MOF/20070704/qvt.xml#TypedModel"/>

<ownedType xmi:type="emof:PrimitiveType" xmi:id="emof.Boolean" name="Boolean" href="http://www.schema.omg.org/spec/MOF/2.0/emof.xml#Boolean"/>


</emof:Package>
</xmi:XMI>