Artefact:Template/org/ooem/templates/wiml-1.0-ooem-multipart-1.0

Code
 G-2.0-java_jpp-1.0 -*- coding: utf-8; -*- ▼… import org.oomodels.wiml.*; ▼… ⊏ signature(String wiml_code) ⊐… « WIMLClass wc; try { wc = WIMLClass.parseWIML(wiml_code); object = wc; boolean has_associations = false; ∀(‖"Ⓟ/Attributes"){ if (‖"Ⓟ/Association"!=null) { has_associations = true; } }/∀ »… MIME-Version: 1.0 Content-type: multipart/mixed; charset=utf-8; boundary="mimeboundery"

--mimeboundery Content-type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=◂‖"Ⓟ/Name"▸.model

 « ⇾(⊙,WIMLStateMachine) {»«}∨{»« }/⇾ » ⋮⊏ ➜ this.Imports(object) ⊐… ◂‖"Ⓟ/Name"▸ ⋮«∀(‖"Ⓟ/ModelTemplateArguments"){»…  ⋮«}/∀»… ⋮«∀(‖"Ⓟ/CodeGeneratorTemplateArguments"){»…  ⋮«}/∀»… ⋮«∀(‖"Ⓟ/ImplementationLanguageTemplateArguments"){»…  ⋮«}/∀»… ⋮«∀(‖"Ⓟ/Bases"){»…  ⋮«}/∀»… ⋮«¬∅(‖"Ⓟ/Stereotypes"){»… «∀(⊙){»◂⊙▸«}/∀» ⋮«}/¬∅»… ⋮« ⇾(⊙,WIMLStateMachine) {»… ⋮«¬∅(‖"Ⓟ/States"){»«∀(⊙){»…  ⋮«}/∀»«}/¬∅»… ⋮« }/⇾ »…  ⋮«∀(‖"Ⓟ/Attributes"){if(‖"Ⓟ/Association" == null){»… <Attribute Name="◂‖"Ⓟ/Name"▸" Type="◂((String)(‖"Ⓟ/Type")).replace("/",".")▸"«¬∅(‖"Ⓟ/Stereotypes"){» Stereotype="«∀(⊙){»◂⊙▸«}/∀»"«}/¬∅»… ⋮⊏ ➜ this.Extensions(object, "Attribute") ⊐… ⋮«}}/∀»… ⋮«∀(‖"Ⓟ/Operations"){»… ⋮« String op_type; ⇾(⊙,WIMLTransition) { op_type = "Transition"; }∨{ op_type = "Operation"; }/⇾ »… <◂op_type▸ Name="◂‖"Ⓟ/Name"▸" ReturnType="◂‖"Ⓟ/ReturnType"▸"«¬∅(‖"Ⓟ/Stereotypes"){» Stereotype="«∀(⊙){»◂⊙▸«}/∀»"«}/¬∅»… ⋮« ⇾(⊙,WIMLTransition) {»«¬∅(‖"Ⓟ/BeforeStates"){»«∀(⊙){» BeforeState-◂Ⓘ+1▸="◂⊙▸"«}/∀»«}/¬∅»« }/⇾ »… ⋮⊏ ➜ this.Extensions(object, op_type) ⊐… ⋮«}/∀»… ⋮⊏ ➜ this.Extensions(object, null) ⊐… « ⇾(⊙,WIMLStateMachine) {»«}∨{»« }/⇾ » « if (has_associations) { »… ⋮«∀(‖"Ⓟ/Attributes"){if(‖"Ⓟ/Association" != null){»… --mimeboundery Content-type: text/plain; charset=utf-8 Content-Disposition: attachment; filename=◂‖[wc]"Ⓟ/Name"▸Association◂‖"Ⓟ/Name"▸.model

 <Association> ⋮⊏ ➜ this.Imports(object) ⊐… ⋮«¬∅(‖"Ⓟ/Stereotypes"){»… «∀(⊙){»◂⊙▸«}/∀»</Stereotype> ⋮«}/¬∅»… <Ends> <End> <Type>◂‖[wc]"Ⓟ/Name"▸</Type> <Multiplicity>1</Multiplicity> <IsNavigable>false</IsNavigable> ⋮⊏ ➜ this.Extensions(object, null) ⊐… </End> <End> <Role>◂‖"Ⓟ/Name"▸</Role> <Type>◂((String)(‖"Ⓟ/Type")).replace("/",".")▸</Type> <Multiplicity>◂‖"Ⓟ/Association"▸</Multiplicity> <IsNavigable>true</IsNavigable> ⋮⊏ ➜ this.Extensions(object, null) ⊐… </End> </Ends> ⋮⊏ ➜ this.Extensions(object, null) ⊐… </Association> ⋮«}}/∀»… « } »… « } catch (Throwable t) { »… ERROR: ◂t▸ « } »… ⊏ Ⓣ Extensions(Object object, String element) ⊐… ⋮«➀:(x)»… ⋮«¬∅(‖"Ⓟ/Extensions"){»… ⋮«∀(⊙){»…     ⋮«if(((String)(‖"Ⓟ/Name")).equals("UML")){»… ⋮«}else{»… ⋮«➀(x){if(element!=null){»> ⋮«}»…   <Extensions> ⋮«}/➀»…       ⋮«if(((String)(‖"Ⓟ/Name")).matches("^org/xmodel/[^/]*")){»… <◂((String)(‖"Ⓟ/Name")).replaceFirst("org/xmodel/","")▸> ⋮«}else{»… <Extension CLASS="◂‖"Ⓟ/Name"▸"> ⋮«}»…         ⋮«∀(‖"Ⓟ/Properties"){»… ◂((WIMLProperty)(⊙)).dumpToXML("       ",null).toString▸ ⋮«}/∀»…       ⋮«if(((String)(‖"Ⓟ/Name")).matches("^org/xmodel/[^/]*")){»… </◂((String)(‖"Ⓟ/Name")).replaceFirst("org/xmodel/","")▸> ⋮«}else{»… </Extension> ⋮«}»…     ⋮«}»…    ⋮«}/∀»…  ⋮«}/¬∅»…  ⋮«¬➀(x){»… </Extensions> ⋮«if(element!=null){»… </◂element▸> ⋮«}»… ⋮«}∨{if(element!=null){»/> ⋮«}»… ⋮«}/¬➀»… ⊏ /Ⓣ ⊐… ⊏ Ⓣ Imports(Object object) ⊐… <StereotypeModelImport>org.uml.stereotypes.*</StereotypeModelImport> <ExternalImport>java.lang.Boolean</ExternalImport> <ExternalImport>java.lang.Byte</ExternalImport> <ExternalImport>java.lang.Short</ExternalImport> <ExternalImport>java.lang.Integer</ExternalImport> <ExternalImport>java.lang.Long</ExternalImport> <ExternalImport>java.lang.Float</ExternalImport> <ExternalImport>java.lang.Double</ExternalImport> <ExternalImport>java.lang.Character</ExternalImport> <ExternalImport>java.lang.String</ExternalImport> <ExternalImport>java.util.Date</ExternalImport> <ExternalImport>java.lang.Object</ExternalImport> <PrimitiveImport>boolean</PrimitiveImport> <PrimitiveImport>byte</PrimitiveImport> <PrimitiveImport>short</PrimitiveImport> <PrimitiveImport>int</PrimitiveImport> <PrimitiveImport>long</PrimitiveImport> <PrimitiveImport>float</PrimitiveImport> <PrimitiveImport>double</PrimitiveImport> <PrimitiveImport>char</PrimitiveImport> ⊏ /Ⓣ ⊐… </OOMCode>