<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="hintco" nsURI="ua.ansymo.hintco" nsPrefix="hintco">
  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
    <details key="basePackage" value="ua.ansymo"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EDataType" name="Int" instanceClassName="int"/>
  <eClassifiers xsi:type="ecore:EClass" name="IDed" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="HintConfiguration">
    <eStructuralFeatures xsi:type="ecore:EReference" name="candidates" upperBound="-1"
        eType="#//RootCandidateScenario" containment="true" resolveProxies="false"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="csuDeclarations" upperBound="-1"
        eType="#//CosimUnitDeclaration" containment="true" resolveProxies="false"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="root" eType="#//VariantDiagram"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
        eType="#//VariantDiagram" containment="true" resolveProxies="false"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="VariantDiagram" eSuperTypes="#//IDed">
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//VariantDiagram"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="alternative" eType="#//Alternative"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="&lt;%java.lang.String%> _xblockexpression = null;&#xA;{&#xA;&#x9;&lt;%java.lang.String%> _identifier = this.getIdentifier();&#xA;&#x9;final &lt;%java.lang.String%> prefix = (_identifier + &quot;_&quot;);&#xA;&#x9;&lt;%java.lang.String%> _xifexpression = null;&#xA;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative = this.getAlternative();&#xA;&#x9;boolean _tripleNotEquals = (_alternative != null);&#xA;&#x9;if (_tripleNotEquals)&#xA;&#x9;{&#xA;&#x9;&#x9;&lt;%java.lang.String%> _xifexpression_1 = null;&#xA;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_1 = this.getAlternative();&#xA;&#x9;&#x9;if ((_alternative_1 instanceof &lt;%ua.ansymo.hintco.RootCandidateScenario%>))&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_2 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _name = ((&lt;%ua.ansymo.hintco.RootCandidateScenario%>) _alternative_2).getName();&#xA;&#x9;&#x9;&#x9;_xifexpression_1 = ((prefix + &quot;sce &quot;) + _name);&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;else&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _xifexpression_2 = null;&#xA;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_3 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;if ((_alternative_3 instanceof &lt;%ua.ansymo.hintco.XorPortAdaptation%>))&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_4 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _name_1 = ((&lt;%ua.ansymo.hintco.XorPortAdaptation%>) _alternative_4).getName();&#xA;&#x9;&#x9;&#x9;&#x9;_xifexpression_2 = ((prefix + &quot;xor &quot;) + _name_1);&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _xifexpression_3 = null;&#xA;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_5 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;if ((_alternative_5 instanceof &lt;%ua.ansymo.hintco.XorUnitAdaptation%>))&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_6 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _name_2 = ((&lt;%ua.ansymo.hintco.XorUnitAdaptation%>) _alternative_6).getName();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_3 = ((prefix + &quot;xor &quot;) + _name_2);&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _xifexpression_4 = null;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_7 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if ((_alternative_7 instanceof &lt;%ua.ansymo.hintco.ExtrapolationAdaptation%>))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_8 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _name_3 = ((&lt;%ua.ansymo.hintco.ExtrapolationAdaptation%>) _alternative_8).getName();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_4 = ((prefix + &quot;extra &quot;) + _name_3);&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _xifexpression_5 = null;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_9 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if ((_alternative_9 instanceof &lt;%ua.ansymo.hintco.InterpolationAdaptation%>))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.Alternative%> _alternative_10 = this.getAlternative();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;%java.lang.String%> _name_4 = ((&lt;%ua.ansymo.hintco.InterpolationAdaptation%>) _alternative_10).getName();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_5 = ((prefix + &quot;intra &quot;) + _name_4);&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_5 = (prefix + &quot;implement&quot;);&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_4 = _xifexpression_5;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_3 = _xifexpression_4;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;_xifexpression_2 = _xifexpression_3;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;_xifexpression_1 = _xifexpression_2;&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;_xifexpression = _xifexpression_1;&#xA;&#x9;}&#xA;&#x9;else&#xA;&#x9;{&#xA;&#x9;&#x9;_xifexpression = (prefix + &quot;root&quot;);&#xA;&#x9;}&#xA;&#x9;_xblockexpression = _xifexpression;&#xA;}&#xA;return _xblockexpression;"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PrecendenceNode" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="precedes" upperBound="-1"
        eType="#//PrecendenceNode" eOpposite="#//PrecendenceNode/succeeds"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="succeeds" upperBound="-1"
        eType="#//PrecendenceNode" eOpposite="#//PrecendenceNode/precedes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="before" eType="#//PrecendenceNode"
        eOpposite="#//PrecendenceNode/after"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="after" eType="#//PrecendenceNode"
        eOpposite="#//PrecendenceNode/before"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RootCandidateScenario" eSuperTypes="#//IDed #//Alternative #//Scenario">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="&lt;%java.lang.String%> _identifier = this.getIdentifier();&#xA;&lt;%java.lang.String%> _plus = (_identifier + &quot;(w=&quot;);&#xA;int _weight = this.getWeight();&#xA;&lt;%java.lang.String%> _plus_1 = (_plus + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;return (_plus_1 + &quot;)&quot;);"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stopTime" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDouble"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stepSize" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDouble"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="outputStepSize" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDouble"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxInitIterations" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
        defaultValueLiteral="10"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Scenario" abstract="true" eSuperTypes="#//IDed">
    <eStructuralFeatures xsi:type="ecore:EReference" name="cosimunits" upperBound="-1"
        eType="#//UnitInstance" containment="true" resolveProxies="false" eOpposite="#//UnitInstance/scenario"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="HierarchicalCosimUnit" eSuperTypes="#//Scenario #//UnitInstance">
    <eOperations name="valid" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PortInstance%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PortInstance%>, &lt;%java.lang.Boolean%>>()&#xA;{&#xA;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.PortInstance%> p)&#xA;&#x9;{&#xA;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf((p instanceof &lt;%ua.ansymo.hintco.HierarchicalUnitPort%>));&#xA;&#x9;}&#xA;};&#xA;return &lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.PortInstance%>>forall(this.getPorts(), _function);"/>
      </eAnnotations>
    </eOperations>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CosimUnitDeclaration" eSuperTypes="#//IDed">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="path" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="guid" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="UnitInstance" abstract="true" eSuperTypes="#//IDed #//PrecendenceNode">
    <eOperations name="selectedAdaptations" unique="false" upperBound="-1" eType="#//UnitAdaptation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.UnitAdaptation%> _adaptation = this.getAdaptation();&#xA;boolean _tripleEquals = (_adaptation == null);&#xA;if (_tripleEquals)&#xA;{&#xA;&#x9;return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>(java.util.Collections.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>unmodifiableList(org.eclipse.xtext.xbase.lib.CollectionLiterals.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>newArrayList()));&#xA;}&#xA;boolean _isSelected = this.getAdaptation().isSelected();&#xA;if (_isSelected)&#xA;{&#xA;&#x9;&lt;%ua.ansymo.hintco.UnitAdaptation%> _adaptation_1 = this.getAdaptation();&#xA;&#x9;if ((_adaptation_1 instanceof &lt;%ua.ansymo.hintco.DecompositionUnitAdaptation%>))&#xA;&#x9;{&#xA;&#x9;&#x9;&lt;%ua.ansymo.hintco.UnitAdaptation%> _adaptation_2 = this.getAdaptation();&#xA;&#x9;&#x9;return ((&lt;%ua.ansymo.hintco.DecompositionUnitAdaptation%>) _adaptation_2).selectedAdaptations();&#xA;&#x9;}&#xA;&#x9;&lt;%ua.ansymo.hintco.UnitAdaptation%> _adaptation_3 = this.getAdaptation();&#xA;&#x9;return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>(java.util.Collections.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>unmodifiableList(org.eclipse.xtext.xbase.lib.CollectionLiterals.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>newArrayList(_adaptation_3)));&#xA;}&#xA;return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>(java.util.Collections.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>unmodifiableList(org.eclipse.xtext.xbase.lib.CollectionLiterals.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>newArrayList()));"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getOutputPorts" unique="false" upperBound="-1" eType="#//OutputPortInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>, &lt;%java.lang.Boolean%>>()&#xA;{&#xA;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.OutputPortInstance%> it)&#xA;&#x9;{&#xA;&#x9;&#x9;boolean _isInput = it.isInput();&#xA;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf((!_isInput));&#xA;&#x9;}&#xA;};&#xA;return &lt;%org.eclipse.emf.common.util.ECollections%>.&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>>toEList(&lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>>filter(&lt;%com.google.common.collect.Iterables%>.&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>>filter(this.getPorts(), &lt;%ua.ansymo.hintco.OutputPortInstance%>.class), _function));"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getInputPorts" unique="false" upperBound="-1" eType="#//InputPortInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>, &lt;%java.lang.Boolean%>>()&#xA;{&#xA;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.InputPortInstance%> it)&#xA;&#x9;{&#xA;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(it.isInput());&#xA;&#x9;}&#xA;};&#xA;return &lt;%org.eclipse.emf.common.util.ECollections%>.&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>>toEList(&lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>>filter(&lt;%com.google.common.collect.Iterables%>.&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>>filter(this.getPorts(), &lt;%ua.ansymo.hintco.InputPortInstance%>.class), _function));"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="toString" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return this.getIdentifier();"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="scenario" eType="#//Scenario"
        eOpposite="#//Scenario/cosimunits"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="adaptation" eType="#//UnitAdaptation"
        containment="true" resolveProxies="false" eOpposite="#//UnitAdaptation/unit"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ports" upperBound="-1"
        eType="#//PortInstance" containment="true" resolveProxies="false" eOpposite="#//PortInstance/unit"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CosimUnitInstance" eSuperTypes="#//UnitInstance">
    <eStructuralFeatures xsi:type="ecore:EReference" name="declaration" lowerBound="1"
        eType="#//CosimUnitDeclaration"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PortInstance" abstract="true" eSuperTypes="#//PrecendenceNode #//IDed">
    <eOperations name="selectedAdaptations" unique="false" upperBound="-1" eType="#//PortAdaptation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.PortAdaptation%> _adaptation = this.getAdaptation();&#xA;boolean _tripleEquals = (_adaptation == null);&#xA;if (_tripleEquals)&#xA;{&#xA;&#x9;return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>(java.util.Collections.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>unmodifiableList(org.eclipse.xtext.xbase.lib.CollectionLiterals.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>newArrayList()));&#xA;}&#xA;boolean _isSelected = this.getAdaptation().isSelected();&#xA;if (_isSelected)&#xA;{&#xA;&#x9;&lt;%ua.ansymo.hintco.PortAdaptation%> _adaptation_1 = this.getAdaptation();&#xA;&#x9;if ((_adaptation_1 instanceof &lt;%ua.ansymo.hintco.DecompositionPortAdaptation%>))&#xA;&#x9;{&#xA;&#x9;&#x9;&lt;%ua.ansymo.hintco.PortAdaptation%> _adaptation_2 = this.getAdaptation();&#xA;&#x9;&#x9;return ((&lt;%ua.ansymo.hintco.DecompositionPortAdaptation%>) _adaptation_2).selectedAdaptations();&#xA;&#x9;}&#xA;&#x9;&lt;%ua.ansymo.hintco.PortAdaptation%> _adaptation_3 = this.getAdaptation();&#xA;&#x9;return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>(java.util.Collections.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>unmodifiableList(org.eclipse.xtext.xbase.lib.CollectionLiterals.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>newArrayList(_adaptation_3)));&#xA;}&#xA;return new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>(java.util.Collections.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>unmodifiableList(org.eclipse.xtext.xbase.lib.CollectionLiterals.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>newArrayList()));"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="isInput" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return false;"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getsValueFrom" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return false;"/>
      </eAnnotations>
      <eParameters name="p" unique="false" eType="#//PortInstance"/>
    </eOperations>
    <eOperations name="toString" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%java.lang.String%> _string = this.getUnit().toString();&#xA;&lt;%java.lang.String%> _plus = (_string + &quot;.&quot;);&#xA;&lt;%java.lang.String%> _identifier = this.getIdentifier();&#xA;return (_plus + _identifier);"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//UnitInstance"
        eOpposite="#//UnitInstance/ports"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="adaptation" eType="#//PortAdaptation"
        containment="true" resolveProxies="false" eOpposite="#//PortAdaptation/port"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="HierarchicalUnitPort" eSuperTypes="#//InputPortInstance #//OutputPortInstance">
    <eOperations name="isInput" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="boolean _xblockexpression = false;&#xA;{&#xA;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;{&#xA;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.OutputPortInstance%> p)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.OutputPortInstance%> _valueFrom = &lt;%this%>.getValueFrom();&#xA;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(&lt;%com.google.common.base.Objects%>.equal(p, _valueFrom));&#xA;&#x9;&#x9;}&#xA;&#x9;};&#xA;&#x9;boolean _exists = &lt;%org.eclipse.xtext.xbase.lib.IteratorExtensions%>.&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>>exists(&lt;%com.google.common.collect.Iterators%>.&lt;&lt;%ua.ansymo.hintco.OutputPortInstance%>>filter(this.getUnit().eAllContents(), &lt;%ua.ansymo.hintco.OutputPortInstance%>.class), _function);&#xA;&#x9;final boolean auxIsInput = (!_exists);&#xA;&#x9;final boolean auxAltIsInput = this.altIsInput();&#xA;&#x9;if (((auxIsInput &amp;&amp; (!auxAltIsInput)) || ((!auxIsInput) &amp;&amp; auxAltIsInput)))&#xA;&#x9;{&#xA;&#x9;&#x9;throw new &lt;%java.lang.RuntimeException%>(&quot;Something wrong with the implementation of isInput&quot;);&#xA;&#x9;}&#xA;&#x9;_xblockexpression = auxIsInput;&#xA;}&#xA;return _xblockexpression;"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="altIsInput" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="boolean _xifexpression = false;&#xA;boolean _isEmpty = this.getValueTo().isEmpty();&#xA;if (_isEmpty)&#xA;{&#xA;&#x9;_xifexpression = false;&#xA;}&#xA;else&#xA;{&#xA;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;{&#xA;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.InputPortInstance%> trgP)&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;boolean _xifexpression = false;&#xA;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.UnitInstance%> _unit = trgP.getUnit();&#xA;&#x9;&#x9;&#x9;&lt;%ua.ansymo.hintco.UnitInstance%> _unit_1 = &lt;%this%>.getUnit();&#xA;&#x9;&#x9;&#x9;boolean _tripleEquals = (_unit == _unit_1);&#xA;&#x9;&#x9;&#x9;if (_tripleEquals)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;_xifexpression = false;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;boolean _xblockexpression = false;&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.InputPortInstance%> ip)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf((ip == trgP));&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;};&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;final boolean internal = &lt;%org.eclipse.xtext.xbase.lib.IteratorExtensions%>.&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>>exists(&lt;%com.google.common.collect.Iterators%>.&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>>filter(&lt;%this%>.getUnit().eAllContents(), &lt;%ua.ansymo.hintco.InputPortInstance%>.class), _function);&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;boolean _xifexpression_1 = false;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if ((!internal))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_1 = false;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;boolean _xifexpression_2 = false;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if ((trgP instanceof &lt;%ua.ansymo.hintco.HierarchicalUnitPort%>))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_2 = ((&lt;%ua.ansymo.hintco.HierarchicalUnitPort%>)trgP).altIsInput();&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_2 = true;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;_xifexpression_1 = _xifexpression_2;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;_xblockexpression = _xifexpression_1;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;_xifexpression = _xblockexpression;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(_xifexpression);&#xA;&#x9;&#x9;}&#xA;&#x9;};&#xA;&#x9;_xifexpression = &lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.InputPortInstance%>>forall(this.getValueTo(), _function);&#xA;}&#xA;return _xifexpression;"/>
      </eAnnotations>
    </eOperations>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="InputPortInstance" eSuperTypes="#//PortInstance">
    <eOperations name="getRealValueFrom" unique="false" eType="#//OutputPortInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.OutputPortInstance%> _xifexpression = null;&#xA;&lt;%ua.ansymo.hintco.OutputPortInstance%> _valueFrom = this.getValueFrom();&#xA;if ((_valueFrom instanceof &lt;%ua.ansymo.hintco.HierarchicalUnitPort%>))&#xA;{&#xA;&#x9;&lt;%ua.ansymo.hintco.OutputPortInstance%> _valueFrom_1 = this.getValueFrom();&#xA;&#x9;_xifexpression = ((&lt;%ua.ansymo.hintco.HierarchicalUnitPort%>) _valueFrom_1).getRealValueFrom();&#xA;}&#xA;else&#xA;{&#xA;&#x9;_xifexpression = this.getValueFrom();&#xA;}&#xA;return _xifexpression;"/>
      </eAnnotations>
    </eOperations>
    <eOperations name="getsValueFrom" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.OutputPortInstance%> _valueFrom = this.getValueFrom();&#xA;boolean _tripleEquals = (_valueFrom == p);&#xA;if (_tripleEquals)&#xA;{&#xA;&#x9;return true;&#xA;}&#xA;else&#xA;{&#xA;&#x9;&lt;%ua.ansymo.hintco.OutputPortInstance%> _valueFrom_1 = this.getValueFrom();&#xA;&#x9;if ((_valueFrom_1 instanceof &lt;%ua.ansymo.hintco.InputPortInstance%>))&#xA;&#x9;{&#xA;&#x9;&#x9;&lt;%ua.ansymo.hintco.OutputPortInstance%> _valueFrom_2 = this.getValueFrom();&#xA;&#x9;&#x9;return ((&lt;%ua.ansymo.hintco.InputPortInstance%>) _valueFrom_2).getsValueFrom(p);&#xA;&#x9;}&#xA;&#x9;else&#xA;&#x9;{&#xA;&#x9;&#x9;return false;&#xA;&#x9;}&#xA;}"/>
      </eAnnotations>
      <eParameters name="p" unique="false" eType="#//PortInstance"/>
    </eOperations>
    <eOperations name="isInput" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return true;"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="internalValueTo" upperBound="-1"
        eType="#//OutputPortInstance" eOpposite="#//OutputPortInstance/internalValueFrom"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="valueFrom" eType="#//OutputPortInstance"
        eOpposite="#//OutputPortInstance/valueTo"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="OutputPortInstance" eSuperTypes="#//PortInstance">
    <eOperations name="isInput" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="return false;"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="valueTo" upperBound="-1"
        eType="#//InputPortInstance" eOpposite="#//InputPortInstance/valueFrom"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="internalValueFrom" upperBound="-1"
        eType="#//InputPortInstance" eOpposite="#//InputPortInstance/internalValueTo"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Alternative" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="weight" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="selected" unique="false"
        eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="implies" upperBound="-1"
        eType="#//Alternative"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Adaptation" abstract="true" eSuperTypes="#//Alternative"/>
  <eClassifiers xsi:type="ecore:EClass" name="PortAdaptation" abstract="true" eSuperTypes="#//Adaptation">
    <eOperations name="adapted" unique="false" eType="#//PortInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.PortInstance%> _port = this.getPort();&#xA;boolean _tripleNotEquals = (_port != null);&#xA;if (_tripleNotEquals)&#xA;{&#xA;&#x9;return this.getPort();&#xA;}&#xA;&lt;%ua.ansymo.hintco.DecompositionPortAdaptation%> _parent = this.getParent();&#xA;boolean _tripleEquals = (_parent == null);&#xA;if (_tripleEquals)&#xA;{&#xA;&#x9;return null;&#xA;}&#xA;return this.getParent().adapted();"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="port" eType="#//PortInstance"
        eOpposite="#//PortInstance/adaptation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//DecompositionPortAdaptation"
        eOpposite="#//DecompositionPortAdaptation/children"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DecompositionPortAdaptation" abstract="true"
      eSuperTypes="#//PortAdaptation">
    <eOperations name="selectedAdaptations" unique="false" upperBound="-1" eType="#//PortAdaptation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="int _size = this.getChildren().size();&#xA;final &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>> res = new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>(_size);&#xA;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>, &lt;%java.lang.Boolean%>>()&#xA;{&#xA;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.PortAdaptation%> a)&#xA;&#x9;{&#xA;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(a.isSelected());&#xA;&#x9;}&#xA;};&#xA;&lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>> _filter = &lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.PortAdaptation%>>filter(this.getChildren(), _function);&#xA;for (final &lt;%ua.ansymo.hintco.PortAdaptation%> c : _filter)&#xA;{&#xA;&#x9;if ((c instanceof &lt;%ua.ansymo.hintco.DecompositionPortAdaptation%>))&#xA;&#x9;{&#xA;&#x9;&#x9;res.addAll(((&lt;%ua.ansymo.hintco.DecompositionPortAdaptation%>)c).selectedAdaptations());&#xA;&#x9;}&#xA;&#x9;else&#xA;&#x9;{&#xA;&#x9;&#x9;res.add(c);&#xA;&#x9;}&#xA;}&#xA;return res;"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//PortAdaptation" containment="true" resolveProxies="false" eOpposite="#//PortAdaptation/parent"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="int _weight = this.getWeight();&#xA;&lt;%java.lang.String%> _plus = (&quot;(w=&quot; + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;return (_plus + &quot;)&quot;);"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="UnitAdaptation" abstract="true" eSuperTypes="#//Adaptation">
    <eOperations name="adapted" unique="false" eType="#//UnitInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.UnitInstance%> _unit = this.getUnit();&#xA;boolean _tripleNotEquals = (_unit != null);&#xA;if (_tripleNotEquals)&#xA;{&#xA;&#x9;return this.getUnit();&#xA;}&#xA;&lt;%ua.ansymo.hintco.DecompositionUnitAdaptation%> _parent = this.getParent();&#xA;boolean _tripleEquals = (_parent == null);&#xA;if (_tripleEquals)&#xA;{&#xA;&#x9;return null;&#xA;}&#xA;return this.getParent().adapted();"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//UnitInstance"
        eOpposite="#//UnitInstance/adaptation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//DecompositionUnitAdaptation"
        eOpposite="#//DecompositionUnitAdaptation/children"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DecompositionUnitAdaptation" abstract="true"
      eSuperTypes="#//UnitAdaptation">
    <eOperations name="selectedAdaptations" unique="false" upperBound="-1" eType="#//UnitAdaptation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="int _size = this.getChildren().size();&#xA;final &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>> res = new &lt;%org.eclipse.emf.common.util.BasicEList%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>(_size);&#xA;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>, &lt;%java.lang.Boolean%>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>, &lt;%java.lang.Boolean%>>()&#xA;{&#xA;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.UnitAdaptation%> a)&#xA;&#x9;{&#xA;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(a.isSelected());&#xA;&#x9;}&#xA;};&#xA;&lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>> _filter = &lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.UnitAdaptation%>>filter(this.getChildren(), _function);&#xA;for (final &lt;%ua.ansymo.hintco.UnitAdaptation%> c : _filter)&#xA;{&#xA;&#x9;if ((c instanceof &lt;%ua.ansymo.hintco.DecompositionUnitAdaptation%>))&#xA;&#x9;{&#xA;&#x9;&#x9;res.addAll(((&lt;%ua.ansymo.hintco.DecompositionUnitAdaptation%>)c).selectedAdaptations());&#xA;&#x9;}&#xA;&#x9;else&#xA;&#x9;{&#xA;&#x9;&#x9;res.add(c);&#xA;&#x9;}&#xA;}&#xA;return res;"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//UnitAdaptation" containment="true" resolveProxies="false" eOpposite="#//UnitAdaptation/parent"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="int _weight = this.getWeight();&#xA;&lt;%java.lang.String%> _plus = (&quot;(w=&quot; + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;return (_plus + &quot;)&quot;);"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="XorUnitAdaptation" eSuperTypes="#//DecompositionUnitAdaptation"/>
  <eClassifiers xsi:type="ecore:EClass" name="XorPortAdaptation" eSuperTypes="#//DecompositionPortAdaptation"/>
  <eClassifiers xsi:type="ecore:EClass" name="ApproximationAdaptation" abstract="true"
      eSuperTypes="#//PortAdaptation">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="order" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MultiRateAdaptation" eSuperTypes="#//UnitAdaptation">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="int _rate = this.getRate();&#xA;&lt;%java.lang.String%> _plus = (&lt;%java.lang.Integer%>.valueOf(_rate) + &quot;(w=&quot;);&#xA;int _weight = this.getWeight();&#xA;&lt;%java.lang.String%> _plus_1 = (_plus + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;return (_plus_1 + &quot;)&quot;);"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PowerBondAdaptation" eSuperTypes="#//UnitAdaptation">
    <eOperations name="getDual" unique="false" eType="#//PowerBondAdaptation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="body" value="&lt;%ua.ansymo.hintco.PowerBondAdaptation%> _xblockexpression = null;&#xA;{&#xA;&#x9;&lt;%ua.ansymo.hintco.PowerBondAdaptation%> res = null;&#xA;&#x9;if (((this.getEffort() instanceof &lt;%ua.ansymo.hintco.InputPortInstance%>) &amp;&amp; (this.getFlow() instanceof &lt;%ua.ansymo.hintco.OutputPortInstance%>)))&#xA;&#x9;{&#xA;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.UnitInstance%>, &lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>> _function = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.UnitInstance%>, &lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>>()&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;public &lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>> apply(final &lt;%ua.ansymo.hintco.UnitInstance%> u)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;return &lt;%org.eclipse.xtext.xbase.lib.IteratorExtensions%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>toIterable(&lt;%com.google.common.collect.Iterators%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>filter(u.eAllContents(), &lt;%ua.ansymo.hintco.PowerBondAdaptation%>.class));&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;};&#xA;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>> _function_1 = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.PowerBondAdaptation%> a)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(((a.getEffort() instanceof &lt;%ua.ansymo.hintco.OutputPortInstance%>) &amp;&amp; (a.getFlow() instanceof &lt;%ua.ansymo.hintco.InputPortInstance%>)));&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;};&#xA;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>> _function_2 = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.PowerBondAdaptation%> a)&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf((((&lt;%ua.ansymo.hintco.OutputPortInstance%>) a.getEffort()).getValueTo().contains(&lt;%this%>.getEffort()) &amp;&amp; (((&lt;%ua.ansymo.hintco.InputPortInstance%>) a.getFlow()).getValueFrom() == &lt;%this%>.getFlow())));&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;};&#xA;&#x9;&#x9;res = &lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>findFirst(&lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>filter(&lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.UnitInstance%>, &lt;%ua.ansymo.hintco.PowerBondAdaptation%>>flatMap(this.getUnit().getScenario().getCosimunits(), _function), _function_1), _function_2);&#xA;&#x9;}&#xA;&#x9;else&#xA;&#x9;{&#xA;&#x9;&#x9;if (((this.getEffort() instanceof &lt;%ua.ansymo.hintco.OutputPortInstance%>) &amp;&amp; (this.getFlow() instanceof &lt;%ua.ansymo.hintco.InputPortInstance%>)))&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.UnitInstance%>, &lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>> _function_3 = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.UnitInstance%>, &lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>>()&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;public &lt;%java.lang.Iterable%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>> apply(final &lt;%ua.ansymo.hintco.UnitInstance%> u)&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;return &lt;%org.eclipse.xtext.xbase.lib.IteratorExtensions%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>toIterable(&lt;%com.google.common.collect.Iterators%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>filter(u.eAllContents(), &lt;%ua.ansymo.hintco.PowerBondAdaptation%>.class));&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;};&#xA;&#x9;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>> _function_4 = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.PowerBondAdaptation%> a)&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(((a.getEffort() instanceof &lt;%ua.ansymo.hintco.InputPortInstance%>) &amp;&amp; (a.getFlow() instanceof &lt;%ua.ansymo.hintco.OutputPortInstance%>)));&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;};&#xA;&#x9;&#x9;&#x9;final &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>> _function_5 = new &lt;%org.eclipse.xtext.xbase.lib.Functions.Function1%>&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>, &lt;%java.lang.Boolean%>>()&#xA;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;public &lt;%java.lang.Boolean%> apply(final &lt;%ua.ansymo.hintco.PowerBondAdaptation%> a)&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;return &lt;%java.lang.Boolean%>.valueOf(((((&lt;%ua.ansymo.hintco.InputPortInstance%>) a.getEffort()).getValueFrom() == &lt;%this%>.getEffort()) &amp;&amp; ((&lt;%ua.ansymo.hintco.OutputPortInstance%>) a.getFlow()).getValueTo().contains(&lt;%this%>.getFlow())));&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;};&#xA;&#x9;&#x9;&#x9;res = &lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>findFirst(&lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.PowerBondAdaptation%>>filter(&lt;%org.eclipse.xtext.xbase.lib.IterableExtensions%>.&lt;&lt;%ua.ansymo.hintco.UnitInstance%>, &lt;%ua.ansymo.hintco.PowerBondAdaptation%>>flatMap(this.getUnit().getScenario().getCosimunits(), _function_3), _function_4), _function_5);&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;else&#xA;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;throw new &lt;%java.lang.RuntimeException%>(&quot;Invalid effort and flow in power bond adaptation&quot;);&#xA;&#x9;&#x9;}&#xA;&#x9;}&#xA;&#x9;if ((res == null))&#xA;&#x9;{&#xA;&#x9;&#x9;throw new &lt;%java.lang.RuntimeException%>(&quot;Power bond adaptation has no dual&quot;);&#xA;&#x9;}&#xA;&#x9;_xblockexpression = res;&#xA;}&#xA;return _xblockexpression;"/>
      </eAnnotations>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="effort" eType="#//PortInstance"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="flow" eType="#//PortInstance"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pOut" eType="#//OutputPortInstance"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pIn" eType="#//InputPortInstance"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="&lt;%java.lang.String%> _xifexpression = null;&#xA;if (((this.getEffort() != null) &amp;&amp; (this.getFlow() != null)))&#xA;{&#xA;&#x9;&lt;%java.lang.String%> _identifier = this.getEffort().getIdentifier();&#xA;&#x9;&lt;%java.lang.String%> _plus = (&quot;PBond_&quot; + _identifier);&#xA;&#x9;&lt;%java.lang.String%> _plus_1 = (_plus + &quot;_&quot;);&#xA;&#x9;&lt;%java.lang.String%> _identifier_1 = this.getFlow().getIdentifier();&#xA;&#x9;&lt;%java.lang.String%> _plus_2 = (_plus_1 + _identifier_1);&#xA;&#x9;&lt;%java.lang.String%> _plus_3 = (_plus_2 + &quot;(w=&quot;);&#xA;&#x9;int _weight = this.getWeight();&#xA;&#x9;&lt;%java.lang.String%> _plus_4 = (_plus_3 + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;&#x9;_xifexpression = (_plus_4 + &quot;)&quot;);&#xA;}&#xA;else&#xA;{&#xA;&#x9;int _weight_1 = this.getWeight();&#xA;&#x9;&lt;%java.lang.String%> _plus_5 = (&quot;PBond(w=&quot; + &lt;%java.lang.Integer%>.valueOf(_weight_1));&#xA;&#x9;_xifexpression = (_plus_5 + &quot;)&quot;);&#xA;}&#xA;return _xifexpression;"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ExtrapolationAdaptation" eSuperTypes="#//ApproximationAdaptation">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="int _order = this.getOrder();&#xA;&lt;%java.lang.String%> _plus = (&lt;%java.lang.Integer%>.valueOf(_order) + &quot;(w=&quot;);&#xA;int _weight = this.getWeight();&#xA;&lt;%java.lang.String%> _plus_1 = (_plus + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;return (_plus_1 + &quot;)&quot;);"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RollbackInterpolationAdaptation" eSuperTypes="#//ExtrapolationAdaptation"/>
  <eClassifiers xsi:type="ecore:EClass" name="InterpolationAdaptation" eSuperTypes="#//ApproximationAdaptation">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="get" value="int _order = this.getOrder();&#xA;&lt;%java.lang.String%> _plus = (&lt;%java.lang.Integer%>.valueOf(_order) + &quot;(w=&quot;);&#xA;int _weight = this.getWeight();&#xA;&lt;%java.lang.String%> _plus_1 = (_plus + &lt;%java.lang.Integer%>.valueOf(_weight));&#xA;return (_plus_1 + &quot;)&quot;);"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
</ecore:EPackage>
