<?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="A0"
    nsURI="http://dually/a0" nsPrefix="A0">
  <eSubpackages name="core" nsURI="http://dually/a0/core" nsPrefix="core">
    <eClassifiers xsi:type="ecore:EClass" name="SAcomponent" eSuperTypes="#//core/Component"/>
    <eClassifiers xsi:type="ecore:EClass" name="SAconnector" eSuperTypes="#//core/Component"/>
    <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="#//core/PropertyHolderElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="implementations" upperBound="-1"
          eType="#//core/TypedElement" eOpposite="#//core/TypedElement/type"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="supertypes" upperBound="-1"
          eType="#//core/Type" eOpposite="#//core/Type/subtypes"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subtypes" upperBound="-1"
          eType="#//core/Type" eOpposite="#//core/Type/supertypes"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SAinterface" eSuperTypes="#//core/InteractionPoint #//core/ArchitecturalElement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//core/SAinterfaceDirection"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" upperBound="-1"
          eType="#//core/Behavior" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true" eSuperTypes="#//core/ConnectableElement #//core/ArchitecturalElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="points" upperBound="-1"
          eType="#//core/InteractionPoint" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subArchitecture" eType="#//core/Architecture"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" upperBound="-1"
          eType="#//core/Behavior" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SAchannel" eSuperTypes="#//core/SArelationship"/>
    <eClassifiers xsi:type="ecore:EClass" name="Behavior" abstract="true" eSuperTypes="#//core/Element"/>
    <eClassifiers xsi:type="ecore:EClass" name="Business" abstract="true" eSuperTypes="#//core/Element"/>
    <eClassifiers xsi:type="ecore:EClass" name="Development" abstract="true" eSuperTypes="#//core/Element"/>
    <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="development" eType="#//core/Development"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="business" eType="#//core/Business"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Link" abstract="true" eSuperTypes="#//core/PropertyHolderElement #//core/TypedElement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="navigability" eType="#//core/LinkNavigability"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1"
          eType="#//core/ConnectableElement"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//core/ConnectableElement"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="fromContext" eType="#//core/Component"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="toContext" eType="#//core/Component"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
        eSuperTypes="#//core/Element"/>
    <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#//core/Element">
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" upperBound="-1"
          eType="#//core/Type" eOpposite="#//core/Type/implementations"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PropertyHolderElement" abstract="true"
        eSuperTypes="#//core/Element">
      <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
          eType="#//core/Property" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//core/Element">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//core/PropertyType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//core/PropertyValue"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="SAinterfaceDirection">
      <eLiterals name="input"/>
      <eLiterals name="output" value="1"/>
      <eLiterals name="inputOutput" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InteractionPoint" abstract="true"
        eSuperTypes="#//core/ConnectableElement"/>
    <eClassifiers xsi:type="ecore:EEnum" name="LinkNavigability">
      <eLiterals name="bidirectional"/>
      <eLiterals name="unidirectional" value="1"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SArelationship" eSuperTypes="#//core/Link #//core/ArchitecturalElement"/>
    <eClassifiers xsi:type="ecore:EClass" name="Architecture" abstract="true" eSuperTypes="#//core/PropertyHolderElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="subElement" upperBound="-1"
          eType="#//core/ArchitecturalElement" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" upperBound="-1"
          eType="#//core/Behavior" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="groups" upperBound="-1"
          eType="#//core/group" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="types" eType="#//core/TypesSpecification"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SoftwareArchitecture" eSuperTypes="#//core/Architecture"/>
    <eClassifiers xsi:type="ecore:EClass" name="ArchitecturalElement" abstract="true"
        eSuperTypes="#//core/PropertyHolderElement #//core/TypedElement"/>
    <eClassifiers xsi:type="ecore:EClass" name="group" eSuperTypes="#//core/Element">
      <eStructuralFeatures xsi:type="ecore:EReference" name="members" upperBound="-1"
          eType="#//core/Element"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TypesSpecification">
      <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
          eType="#//core/Type" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SAtype" eSuperTypes="#//core/Type">
      <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" upperBound="-1"
          eType="#//core/Behavior" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="PropertyType">
      <eLiterals name="string"/>
      <eLiterals name="int" value="1"/>
      <eLiterals name="boolean" value="2"/>
      <eLiterals name="reference" value="3"/>
      <eLiterals name="float" value="4"/>
      <eLiterals name="double" value="5"/>
      <eLiterals name="short" value="6"/>
      <eLiterals name="long" value="7"/>
      <eLiterals name="any" value="8"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PropertyValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="floatValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="referenceValue" eType="#//core/Element"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="intValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="shortValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="longValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SAstructuredType" eSuperTypes="#//core/SAtype">
      <eStructuralFeatures xsi:type="ecore:EReference" name="definition" eType="#//core/Architecture"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SABinding" eSuperTypes="#//core/SArelationship"/>
    <eClassifiers xsi:type="ecore:EClass" name="A0Spec" eSuperTypes="#//core/Element">
      <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
          eType="#//core/Element" containment="true"/>
    </eClassifiers>
  </eSubpackages>
</ecore:EPackage>
