<?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="javaCardModel" nsURI="javaCardModel" nsPrefix="javaCardModel">
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="ApplicationClass">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ApplicationNameSizeMustGreaterThenZero AplicationClassFieldsMustHaveAccessSpecifier ApplicationClassNeedsOneProcessANDOneInstallMethos"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ApplicationNameSizeMustGreaterThenZero" value="&#xA;&#x9;&#x9;className.size()>0"/>
      <details key="AplicationClassFieldsMustHaveAccessSpecifier" value="&#xA;&#x9;&#x9;self.fields->forAll(f | f.accessSpecifier &lt;> AccessSpecifiers::none)"/>
      <details key="ApplicationClassNeedsOneProcessANDOneInstallMethos" value="&#xA;&#x9;&#x9;self.applets->size()>0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="className" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" upperBound="-1"
        eType="#//Field" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="methods" upperBound="-1"
        eType="#//Method" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="applets" lowerBound="1"
        upperBound="-1" eType="#//Applet" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Field">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="FieldMustHaveName IfAccessSpecifierExistFieldTypeNotBeNone"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="FieldMustHaveName" value="&#xA;&#x9;&#x9;self.name.size()>0"/>
      <details key="IfAccessSpecifierExistFieldTypeNotBeNone" value="&#xA;&#x9;&#x9;self.accessSpecifier &lt;> AccessSpecifiers::none implies&#xA;&#x9;&#x9;self.dataType &lt;> DataTypes::none"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessSpecifier" eType="#//AccessSpecifiers"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dataType" eType="#//DataTypes"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="initialValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isFinal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Method">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="MethodMustHaveName MethodMustHaveAccessSpecifier MethodMustHaveReturnType IfMethodDataTypeIsNotVoidThenReturnFieldNameMustBeZero IfMethodHasPatametersThenParameterMustHaveDataType IfMethodsFieldMustNotUseAccessSpecifiers IfMethodsHasExceptionSoExceptionMustNotBeNone IfMethodsHasExceptionSoExceptionMustNotBeException"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="MethodMustHaveName" value="&#xA;&#x9;&#x9;self.methodName.size()>0"/>
      <details key="MethodMustHaveAccessSpecifier" value="&#xA;&#x9;&#x9;self.accessSpecifier &lt;> AccessSpecifiers::none"/>
      <details key="MethodMustHaveReturnType" value="&#xA;&#x9;&#x9;self.returnType &lt;> DataTypes::none"/>
      <details key="IfMethodDataTypeIsNotVoidThenReturnFieldNameMustBeZero" value="&#xA;&#x9;&#x9;self.returnType = DataTypes::void implies&#xA;&#x9;&#x9;self.returnFieldName=null"/>
      <details key="IfMethodHasPatametersThenParameterMustHaveDataType" value="&#xA;&#x9;&#x9;self.parameters->forAll(f | f.dataType &lt;> DataTypes::none)"/>
      <details key="IfMethodsFieldMustNotUseAccessSpecifiers" value="&#xA;&#x9;&#x9;self.fields->forAll(x | x.accessSpecifier &lt;> AccessSpecifiers::none)"/>
      <details key="IfMethodsHasExceptionSoExceptionMustNotBeNone" value="&#xA;&#x9;&#x9;self.exceptions->forAll(e | e.exceptionType &lt;> ExceptionTypes::none)"/>
      <details key="IfMethodsHasExceptionSoExceptionMustNotBeException" value="&#xA;&#x9;&#x9;self.exceptions->forAll(e | e.exceptionType &lt;> ExceptionTypes::Exception)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessSpecifier" eType="#//AccessSpecifiers"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="returnType" eType="#//DataTypes"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="returnFieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="comments" upperBound="-1"
        eType="#//Comment" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" upperBound="-1"
        eType="#//Field" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="exceptions" upperBound="3"
        eType="#//MethodException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="aesKeys" upperBound="-1"
        eType="#//AESKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="aids" upperBound="-1" eType="#//AID"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="apdus" upperBound="-1"
        eType="#//APDU" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="apduExceptions" upperBound="-1"
        eType="#//APDUException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="arithmaticExceptions" upperBound="-1"
        eType="#//ArithmeticException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="arrayIndexOutOfBoundsExceptions"
        upperBound="-1" eType="#//ArrayIndexOutOfBoundsException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="arrayStoreExceptions" upperBound="-1"
        eType="#//ArrayStoreException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="cardExceptions" upperBound="-1"
        eType="#//CardException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="checksums" upperBound="-1"
        eType="#//Checksum" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ciphers" upperBound="-1"
        eType="#//Cipher" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="classCastExceptions" upperBound="-1"
        eType="#//ClassCastException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="cryptoExceptions" upperBound="-1"
        eType="#//CryptoException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="desKeys" upperBound="-1"
        eType="#//DESKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dsaKeys" upperBound="-1"
        eType="#//DSAKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dsaPrivateKeys" upperBound="-1"
        eType="#//DSAPrivateKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="dsaPublicKeys" upperBound="-1"
        eType="#//DSAPublicKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ecKeys" upperBound="-1"
        eType="#//ECKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ecPrivateKeys" upperBound="-1"
        eType="#//ECPrivateKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ecPublicKeys" upperBound="-1"
        eType="#//ECPublicKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="hmacKeys" upperBound="-1"
        eType="#//HMACKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="indexOutOfBoundsExceptions"
        upperBound="-1" eType="#//IndexOutOfBoundsException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="initializeMessageDigests"
        upperBound="-1" eType="#//InitializedMessageDigest" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="iso7816s" upperBound="-1"
        eType="#//ISO7816" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="isoExceptions" upperBound="-1"
        eType="#//ISOException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="keys" upperBound="-1" eType="#//Key"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="keyAgreements" upperBound="-1"
        eType="#//KeyAgreement" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="keyBuilders" upperBound="-1"
        eType="#//KeyBuilder" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="keyEncryotions" upperBound="-1"
        eType="#//KeyEncryption" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="keyPairs" upperBound="-1"
        eType="#//KeyPair" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="koreanSEEDKeys" upperBound="-1"
        eType="#//KoreanSEEDKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="messageDigests" upperBound="-1"
        eType="#//MessageDigest" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="negativeArraySizeExceptions"
        upperBound="-1" eType="#//NegativeArraySizeException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="nullPointerExceptions"
        upperBound="-1" eType="#//NullPointerException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ownerPins" upperBound="-1"
        eType="#//OwnerPIN" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pins" upperBound="-1" eType="#//PIN"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="pinExceptions" upperBound="-1"
        eType="#//PINException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="privateKeys" upperBound="-1"
        eType="#//PrivateKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="publicKeys" upperBound="-1"
        eType="#//PublicKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="randomData" upperBound="-1"
        eType="#//RandomData" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="rsaPrivateCrtKeys" upperBound="-1"
        eType="#//RSAPrivateCrtKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="rsaPrivateKeys" upperBound="-1"
        eType="#//RSAPrivateKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="rsaPublicKeys" upperBound="-1"
        eType="#//RSAPublicKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="secretKeys" upperBound="-1"
        eType="#//SecretKey" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="securityExceptions" upperBound="-1"
        eType="#//SecurityException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceExceptions" upperBound="-1"
        eType="#//ServiceException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="signatures" upperBound="-1"
        eType="#//Signature" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="signatureMessageRecoveries"
        upperBound="-1" eType="#//SignatureMessageRecovery" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="systemExceptions" upperBound="-1"
        eType="#//SystemException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="transactionExceptions"
        upperBound="-1" eType="#//TransactionException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="userExceptions" upperBound="-1"
        eType="#//UserException" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="utils" upperBound="-1"
        eType="#//Util" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="utilExceptions" upperBound="-1"
        eType="#//UtilException" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Comment">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="commentLine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="AccessSpecifiers">
    <eLiterals name="none"/>
    <eLiterals name="public" value="1"/>
    <eLiterals name="private" value="2"/>
    <eLiterals name="protected" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="DataTypes">
    <eLiterals name="none"/>
    <eLiterals name="byte" value="1"/>
    <eLiterals name="short" value="2"/>
    <eLiterals name="int" value="3"/>
    <eLiterals name="String" value="4"/>
    <eLiterals name="double" value="5"/>
    <eLiterals name="APDU" value="6"/>
    <eLiterals name="OwnerPIN" value="7"/>
    <eLiterals name="void" value="8"/>
    <eLiterals name="PIN" value="9"/>
    <eLiterals name="Object" value="10"/>
    <eLiterals name="AID" value="11"/>
    <eLiterals name="Cipher" value="12"/>
    <eLiterals name="Checksum" value="13"/>
    <eLiterals name="KeyAgreement" value="14"/>
    <eLiterals name="KeyBuilder" value="15"/>
    <eLiterals name="KeyPair" value="16"/>
    <eLiterals name="MessageDigest" value="17"/>
    <eLiterals name="InitializedMessageDigest" value="18"/>
    <eLiterals name="RandomData" value="19"/>
    <eLiterals name="Signature" value="20"/>
    <eLiterals name="DSAKey" value="21"/>
    <eLiterals name="DSAPrivateKey" value="22"/>
    <eLiterals name="DSAPublicKey" value="23"/>
    <eLiterals name="ECKey" value="24"/>
    <eLiterals name="ECPrivateKey" value="25"/>
    <eLiterals name="ECPublicKey" value="26"/>
    <eLiterals name="Key" value="27"/>
    <eLiterals name="PrivateKey" value="28"/>
    <eLiterals name="RSAPrivateKey" value="29"/>
    <eLiterals name="RSAPrivateCrtKey" value="30"/>
    <eLiterals name="PublicKey" value="31"/>
    <eLiterals name="RSAPublicKey" value="32"/>
    <eLiterals name="SecretKey" value="33"/>
    <eLiterals name="AESKey" value="34"/>
    <eLiterals name="DESKey" value="35"/>
    <eLiterals name="HMACKey" value="36"/>
    <eLiterals name="KoreanSEEDKey" value="37"/>
    <eLiterals name="SignatureMessageRecovery" value="38"/>
    <eLiterals name="ISO7816" value="38"/>
    <eLiterals name="KeyEncryption" value="39"/>
    <eLiterals name="Util" value="40"/>
    <eLiterals name="UtilException" value="41"/>
    <eLiterals name="boolean" value="42"/>
    <eLiterals name="Applet" value="43"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Applet">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="AppletProcessMethodMustHaveOneParameter AppletGetShareableInterfaceObjectMethodMustHaveTwoParameters AppletdeselectMethodDontNeedAnyThingItwillBeGeneratedAutomatically"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="AppletProcessMethodMustHaveOneParameter" value="&#xA;&#x9;&#x9;self.method=AppletMethods::process implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.parameters->forAll(f | f.dataType = DataTypes::APDU)"/>
      <details key="AppletGetShareableInterfaceObjectMethodMustHaveTwoParameters"
          value="&#xA;&#x9;&#x9;self.method=AppletMethods::getShareableInterfaceObject implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="AppletdeselectMethodDontNeedAnyThingItwillBeGeneratedAutomatically"
          value="&#xA;&#x9;&#x9;self.method=AppletMethods::deselect implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//AppletMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="AppletMethods">
    <eLiterals name="Applet" value="1"/>
    <eLiterals name="getShareableInterfaceObject" value="2"/>
    <eLiterals name="register" value="3"/>
    <eLiterals name="deselect" value="4"/>
    <eLiterals name="select" value="5"/>
    <eLiterals name="process" value="6"/>
    <eLiterals name="install" value="7"/>
    <eLiterals name="selectingApplet" value="8"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="APDU">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="APDUgetBufferMethodsNeedByteArrayField APDUgetCLAChannelisSTATICAndMethodsNeedByteField APDUgetCurrentAPDUisSTATICAndMethodsNeedAPDUField APDUgetCurrentAPDUBufferisSTATICAndMethodsNeedByteArrayField APDUgetCurrentStateMethodsNeedByteField APDUgetInBlockSizeisSTATICAndMethodsNeedShortField APDUgetIncomingLengthMethodsNeedShortField APDUgetNADMethodsNeedByteField APDUgetOffsetCdataMethodsNeedshortField APDUgetOutBlockSizeisSTATICAndMethodsNeedShortField APDUgetProtocolisSTATICAndMethodsNeedByteField APDUisCommandChainingCLAMethodsNeedBooleanField APDUisISOInterindustryCLAMethodsNeedBooleanField APDUisSecureMessagingCLAMethodsNeedBooleanField APDUisValidCLAMethodsNeedBooleanField APDUReceiveBytesMethodsMustHaveOneParameterAndShortField APDUsendBytesMethodsMustHave2ParameterButDontNeedField APDUsendBytesLongMethodsMustHave3ParameterButDontNeedField APDUsetOutgoingAndSendMethodsMustHave2ParameterButDontNeedField APDUsetIncomingAndReceiveMethodsNeedShortField APDUsetOutgoingMethodsNeedShortField APDUsetOutgoingAndSendMethodsDontNeedAnyParametersAndField APDUsetOutgoingLengthMethodsMustHave1ParameterButDontNeedAnyField APDUsetOutgoingNoChainingMethodsNeedShortField APDUwaitExtensionisSTATICAndMethodDontNeedAnyParameterOrField WARNING_IfYouChooseAnyOfAPDUFieldsYouWontUseAPDUMethodsORIfYouDontChooseAnyOfAPDUFieldsYouCantUseAPDUMethods"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="APDUgetBufferMethodsNeedByteArrayField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getBuffer implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte) and self.fields->forAll(e | e.isArray=true)"/>
      <details key="APDUgetCLAChannelisSTATICAndMethodsNeedByteField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getCLAChannel implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="APDUgetCurrentAPDUisSTATICAndMethodsNeedAPDUField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getCurrentAPDU implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::APDU)"/>
      <details key="APDUgetCurrentAPDUBufferisSTATICAndMethodsNeedByteArrayField"
          value="&#xA;&#x9;&#x9;self.method=APDUMethods::getCurrentAPDUBuffer implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte) and self.fields->forAll(e | e.isArray=true)"/>
      <details key="APDUgetCurrentStateMethodsNeedByteField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getCurrentState implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="APDUgetInBlockSizeisSTATICAndMethodsNeedShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getInBlockSize implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUgetIncomingLengthMethodsNeedShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getIncomingLength implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUgetNADMethodsNeedByteField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getNAD implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="APDUgetOffsetCdataMethodsNeedshortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getOffsetCdata implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUgetOutBlockSizeisSTATICAndMethodsNeedShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getOutBlockSize implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUgetProtocolisSTATICAndMethodsNeedByteField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::getProtocol implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="APDUisCommandChainingCLAMethodsNeedBooleanField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::isCommandChainingCLA implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="APDUisISOInterindustryCLAMethodsNeedBooleanField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::isISOInterindustryCLA implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="APDUisSecureMessagingCLAMethodsNeedBooleanField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::isSecureMessagingCLA implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="APDUisValidCLAMethodsNeedBooleanField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::isValidCLA implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="APDUReceiveBytesMethodsMustHaveOneParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::receiveBytes implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUsendBytesMethodsMustHave2ParameterButDontNeedField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::sendBytes implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->size()=0"/>
      <details key="APDUsendBytesLongMethodsMustHave3ParameterButDontNeedField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::sendBytesLong implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="APDUsetOutgoingAndSendMethodsMustHave2ParameterButDontNeedField"
          value="&#xA;&#x9;&#x9;self.method=APDUMethods::setOutgoingAndSend implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->size()=0"/>
      <details key="APDUsetIncomingAndReceiveMethodsNeedShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::setIncomingAndReceive implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUsetOutgoingMethodsNeedShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::setOutgoing implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUsetOutgoingAndSendMethodsDontNeedAnyParametersAndField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::setOutgoingAndSend implies&#xA;&#x9;&#x9;self.fields->size()=0 and self.parameters->size()=0"/>
      <details key="APDUsetOutgoingLengthMethodsMustHave1ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=APDUMethods::setOutgoingLength implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=0"/>
      <details key="APDUsetOutgoingNoChainingMethodsNeedShortField" value="&#xA;&#x9;&#x9;self.method=APDUMethods::setOutgoingNoChaining implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="APDUwaitExtensionisSTATICAndMethodDontNeedAnyParameterOrField"
          value="&#xA;&#x9;&#x9;self.method=APDUMethods::waitExtension implies&#xA;&#x9;&#x9;self.fields->size()=0 and self.parameters->size()=0"/>
      <details key="WARNING_IfYouChooseAnyOfAPDUFieldsYouWontUseAPDUMethodsORIfYouDontChooseAnyOfAPDUFieldsYouCantUseAPDUMethods"
          value="&#xA;&#x9;&#x9;self.apduField&lt;>APDUFields::none"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="apduField" eType="#//APDUFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//APDUMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="APDUFields">
    <eLiterals name="none"/>
    <eLiterals name="STATE_ERROR_NO_T0_GETRESPONSE" value="1"/>
    <eLiterals name="PROTOCOL_MEDIA_CONTACTLESS_TYPE_B" value="2"/>
    <eLiterals name="STATE_FULL_OUTGOING" value="3"/>
    <eLiterals name="PROTOCOL_MEDIA_USB" value="4"/>
    <eLiterals name="STATE_ERROR_NO_T0_REISSUE" value="5"/>
    <eLiterals name="PROTOCOL_TYPE_MASK" value="6"/>
    <eLiterals name="PROTOCOL_T0" value="7"/>
    <eLiterals name="PROTOCOL_MEDIA_DEFAULT" value="8"/>
    <eLiterals name="STATE_OUTGOING_LENGTH_KNOWN" value="9"/>
    <eLiterals name="STATE_INITIAL" value="10"/>
    <eLiterals name="STATE_PARTIAL_INCOMING" value="11"/>
    <eLiterals name="STATE_OUTGOING" value="12"/>
    <eLiterals name="STATE_ERROR_T1_IFD_ABORT" value="13"/>
    <eLiterals name="PROTOCOL_T1" value="14"/>
    <eLiterals name="STATE_FULL_INCOMING" value="15"/>
    <eLiterals name="PROTOCOL_MEDIA_CONTACTLESS_TYPE_A" value="16"/>
    <eLiterals name="STATE_ERROR_IO" value="17"/>
    <eLiterals name="PROTOCOL_MEDIA_MASK" value="18"/>
    <eLiterals name="STATE_PARTIAL_OUTGOING" value="19"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="APDUMethods">
    <eLiterals name="getInBlockSize" value="1"/>
    <eLiterals name="getCLAChannel" value="2"/>
    <eLiterals name="waitExtension" value="3"/>
    <eLiterals name="getCurrentAPDUBuffer" value="4"/>
    <eLiterals name="setIncomingAndReceive" value="5"/>
    <eLiterals name="getOutBlockSize" value="6"/>
    <eLiterals name="setOutgoingLength" value="7"/>
    <eLiterals name="setOutgoingAndSend" value="8"/>
    <eLiterals name="getBuffer" value="9"/>
    <eLiterals name="setOutgoing" value="10"/>
    <eLiterals name="receiveBytes" value="11"/>
    <eLiterals name="sendBytes" value="12"/>
    <eLiterals name="setOutgoingNoChaining" value="13"/>
    <eLiterals name="getNAD" value="14"/>
    <eLiterals name="getCurrentAPDU" value="15"/>
    <eLiterals name="getProtocol" value="16"/>
    <eLiterals name="getCurrentState" value="17"/>
    <eLiterals name="sendBytesLong" value="18"/>
    <eLiterals name="getIncomingLength" value="19"/>
    <eLiterals name="getOffsetCdata" value="20"/>
    <eLiterals name="isCommandChainingCLA" value="21"/>
    <eLiterals name="isISOInterindustryCLA" value="22"/>
    <eLiterals name="isSecureMessagingCLA" value="23"/>
    <eLiterals name="isValidCLA" value="24"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PIN" abstract="true" interface="true">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="PINCheckMethodsMustHaveThreeParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="PINCheckMethodsMustHaveThreeParameter" value="&#xA;&#x9;&#x9;self.method=PINMethods::check implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//PINMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PINMethods">
    <eLiterals name="getTriesRemaining" value="1"/>
    <eLiterals name="check" value="2"/>
    <eLiterals name="isValidated" value="3"/>
    <eLiterals name="reset" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="OwnerPIN">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="OwnerPINCheckMethodsMustHaveThreeParameterAndItHasBooleanReturnTypeSoAddOneBooleanField OwnerPINgetTriesRemainingMethodHasNeedByteFiedl OwnerPINUpdateMethodsMustHaveThreeParameter OwnerPINSetValidatedFlagMethodsMustHaveOneParameter OwnerPINisValidatedMethodHasNeedByteFiedl"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="OwnerPINCheckMethodsMustHaveThreeParameterAndItHasBooleanReturnTypeSoAddOneBooleanField"
          value="Tuple {&#xA;&#x9;message : String = 'check method must need three parameter and one boolean field for retrun value',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.method=OwnerPINMethods::check implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=1&#xA;}.status"/>
      <details key="OwnerPINgetTriesRemainingMethodHasNeedByteFiedl" value="Tuple {&#xA;&#x9;message : String = 'getTriesRemaining Method has need one byte field for retrun value',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.method=OwnerPINMethods::getTriesRemaining implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)&#xA;}.status"/>
      <details key="OwnerPINUpdateMethodsMustHaveThreeParameter" value="Tuple {&#xA;&#x9;message : String = 'update must have three Byte Array, short and byte parameters',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.method=OwnerPINMethods::update implies&#xA;&#x9;&#x9;self.parameters->size()=3&#xA;}.status"/>
      <details key="OwnerPINSetValidatedFlagMethodsMustHaveOneParameter" value="Tuple {&#xA;&#x9;message : String = 'setValidatedFlag must have boolean parameter',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.method=OwnerPINMethods::setValidatedFlag implies&#xA;&#x9;&#x9;self.parameters->size()=1&#xA;}.status"/>
      <details key="OwnerPINisValidatedMethodHasNeedByteFiedl" value="Tuple {&#xA;&#x9;message : String = 'isValidated Method has need one boolean field for retrun value',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.method=OwnerPINMethods::isValidated implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)&#xA;}.status"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//OwnerPINMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="OwnerPINMethods">
    <eLiterals name="OwnerPIN" value="1"/>
    <eLiterals name="getValidatedFlag" value="2"/>
    <eLiterals name="setValidatedFlag" value="3"/>
    <eLiterals name="getTriesRemaining" value="4"/>
    <eLiterals name="check" value="5"/>
    <eLiterals name="isValidated" value="6"/>
    <eLiterals name="reset" value="7"/>
    <eLiterals name="update" value="8"/>
    <eLiterals name="resetAndUnblock" value="9"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ExceptionUsageTypes">
    <eLiterals name="none"/>
    <eLiterals name="tryCatch" value="1"/>
    <eLiterals name="ifElse" value="2"/>
    <eLiterals name="ThrowNew" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Parameter">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ParameterMustHaveName"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ParameterMustHaveName" value="Tuple {&#xA;&#x9;message : String = 'Parameters must have name',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.name.size()>0&#xA;}.status"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dataType" eType="#//DataTypes"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Object">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ObjectMustHaveAtLeastOneApplicationClass"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ObjectMustHaveAtLeastOneApplicationClass" value="&#xA;&#x9;&#x9;self.applicationClasses->size()>0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="applicationClasses" lowerBound="1"
        upperBound="-1" eType="#//ApplicationClass" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ExceptionTypes">
    <eLiterals name="none"/>
    <eLiterals name="Exception" value="1"/>
    <eLiterals name="CardException" value="2"/>
    <eLiterals name="UserException" value="3"/>
    <eLiterals name="RuntimeException" value="4"/>
    <eLiterals name="CardRuntimeException" value="5"/>
    <eLiterals name="APDUException" value="6"/>
    <eLiterals name="CryptoException" value="7"/>
    <eLiterals name="PINException" value="8"/>
    <eLiterals name="ISOException" value="9"/>
    <eLiterals name="ServiceException" value="10"/>
    <eLiterals name="SystemException" value="11"/>
    <eLiterals name="TransactionException" value="12"/>
    <eLiterals name="ArithmeticException" value="13"/>
    <eLiterals name="ArrayStoreException" value="14"/>
    <eLiterals name="ClassCastException" value="15"/>
    <eLiterals name="IndexOutOfBoundsException" value="16"/>
    <eLiterals name="ArrayIndexOutOfBoundsException" value="17"/>
    <eLiterals name="NegativeArraySizeException" value="18"/>
    <eLiterals name="NullPointerException" value="19"/>
    <eLiterals name="SecurityException" value="20"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MethodException">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionType" eType="#//ExceptionTypes"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Throwable" abstract="true" interface="true">
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ThrowableMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ThrowableMethods">
    <eLiterals name="Throwable"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Exception" abstract="true" interface="true">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfExceptionUseTryCatchJustAddOneField IfExceptionUseThrowNewJustAddOneField ExceptionMethodsDoNotNeedParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfExceptionUseTryCatchJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="IfExceptionUseThrowNewJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="ExceptionMethodsDoNotNeedParameter" value="&#xA;&#x9;&#x9;self.method = ExceptionMethods::Exception implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ExceptionMethods">
    <eLiterals name="Exception"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CardException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="CardExceptionSetReasonMethodsMustHaveOneParameterButDontNeedAnyField CardExceptionThrowItisSTATICAndMethodsMustHaveOneParameterDontNeedField IfCardExceptionUseTryCatchJustAddOneField IfCardExceptionUseThrowNewJustAddOneField CardExceptiongetReasonMethodsNeedShortFieldButDontNeedAnyParameters"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="CardExceptionSetReasonMethodsMustHaveOneParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=CardExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=0"/>
      <details key="CardExceptionThrowItisSTATICAndMethodsMustHaveOneParameterDontNeedField"
          value="&#xA;&#x9;&#x9;self.method=CardExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=0"/>
      <details key="IfCardExceptionUseTryCatchJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="IfCardExceptionUseThrowNewJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="CardExceptiongetReasonMethodsNeedShortFieldButDontNeedAnyParameters"
          value="&#xA;&#x9;&#x9;self.method=CardExceptionMethods::getReason implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//CardExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="CardExceptionMethods">
    <eLiterals name="CardException"/>
    <eLiterals name="getReason" value="1"/>
    <eLiterals name="setReason" value="2"/>
    <eLiterals name="throwIt" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="UserException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="UserExceptionMethodsMustHaveOneParameter UserExceptionThrowItMethodsMustHaveOneParameter IfUserExceptionUseTryCatchJustAddOneField IfUserExceptionUseThrowNewJustAddOneField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="UserExceptionMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = UserExceptionMethods::UserException implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="UserExceptionThrowItMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = UserExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="IfUserExceptionUseTryCatchJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="IfUserExceptionUseThrowNewJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//UserExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="UserExceptionMethods">
    <eLiterals name="UserException"/>
    <eLiterals name="throwIt" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RuntimeException" abstract="true" interface="true">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfRuntimeExceptionUseTryCatchJustAddOneField IfRuntimeExceptionUseThrowNewJustAddOneField RuntimeExceptionMethodsDoNotNeedAnyParameter RuntimeExceptionEqualsMethodsNeedOneParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfRuntimeExceptionUseTryCatchJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="IfRuntimeExceptionUseThrowNewJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="RuntimeExceptionMethodsDoNotNeedAnyParameter" value="&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RuntimeExceptionEqualsMethodsNeedOneParameter" value="&#xA;&#x9;&#x9;self.parameters->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//RuntimeExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="RuntimeExceptionMethods">
    <eLiterals name="RuntimeException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CardRuntimeException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="CardRuntimeExceptionMethodsMustHaveOneParameter CardRuntimeExceptionSetReasonMethodsMustHaveOneParameterButDontNeedFields CardRuntimeExceptiongetReasonMethodDontNeedAnyParameterButNeedShortField CardRuntimeExceptionThrowITisSTATICAndMethodsMustHaveOneParameter CardRuntimeExceptionEqualsMethodsMustHaveOnParameterAndBooleanField IfCardRuntimeExceptionUseTryCatchJustAddOneField IfCardRunTimeExceptionUseThrowNewJustAddOneField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="CardRuntimeExceptionMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CardRuntimeExceptionMethods::CardRuntimeException implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="CardRuntimeExceptionSetReasonMethodsMustHaveOneParameterButDontNeedFields"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CardRuntimeExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->size()=0"/>
      <details key="CardRuntimeExceptiongetReasonMethodDontNeedAnyParameterButNeedShortField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CardRuntimeExceptionMethods::getReason implies&#xA;&#x9;&#x9;self.parameters ->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="CardRuntimeExceptionThrowITisSTATICAndMethodsMustHaveOneParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CardRuntimeExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="CardRuntimeExceptionEqualsMethodsMustHaveOnParameterAndBooleanField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CardRuntimeExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::boolean)"/>
      <details key="IfCardRuntimeExceptionUseTryCatchJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="IfCardRunTimeExceptionUseThrowNewJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//CardExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="CardRuntimeExceptionMethods">
    <eLiterals name="CardRuntimeException"/>
    <eLiterals name="getReason" value="1"/>
    <eLiterals name="setReason" value="2"/>
    <eLiterals name="throwIt" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="UtilException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="UtilExceptionMethodsMustHaveOneParameter UtilExceptionSetReasonMethodsMustHaveOneParameterOrsystemExceptionField UtilExceptionThrowITMethodsMustHaveOneParameterOrsystemExceptionField UtilExceptionEqualsMethodsMustHaveOneObjectTypeParameter UtilExceptionUseTryCatchJustAddOneField UtilExceptionUseThrowNewJustAddOneField IfUtilExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="UtilExceptionMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = UtilExceptionMethods::UtilException implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="UtilExceptionSetReasonMethodsMustHaveOneParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = UtilExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.utilExceptionField &lt;> UtilExceptionFields::none"/>
      <details key="UtilExceptionThrowITMethodsMustHaveOneParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = UtilExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.utilExceptionField &lt;> UtilExceptionFields::none"/>
      <details key="UtilExceptionEqualsMethodsMustHaveOneObjectTypeParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = UtilExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="UtilExceptionUseTryCatchJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="UtilExceptionUseThrowNewJustAddOneField" value="&#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields->size()=1"/>
      <details key="IfUtilExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ifElse implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.utilExceptionField &lt;> UtilExceptionFields::none"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="utilExceptionField" eType="#//UtilExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//UtilExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="UtilExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="ILLEGAL_VALUE" value="1"/>
    <eLiterals name="TYPE_MISMATCHED" value="2"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="UtilExceptionMethods">
    <eLiterals name="UtilException"/>
    <eLiterals name="throwIt" value="1"/>
    <eLiterals name="getReason" value="2"/>
    <eLiterals name="setReason" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="APDUException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="APDUExceptionMethodsMustHaveOneParameter APDUExceptionThrowItisSTATICAndMethodsMustHaveOneParameterOR1APDUExceptionFieldsButDontNeedAnyField APDUExceptionSetReasonMethodsMustHaveOneParameterButDontNeedAnyField APDUExceptiongetReasonMethodsMustHaveOneParameterAndShortField IfAPDUExceptionUseTryCatchJustAddOneField IfAPDUExceptionUseThrowNewJustAddOneField IfAPDUExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="APDUExceptionMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = APDUExceptionMethods::APDUException implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="APDUExceptionThrowItisSTATICAndMethodsMustHaveOneParameterOR1APDUExceptionFieldsButDontNeedAnyField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = APDUExceptionMethods::throwIt implies&#xA;&#x9;&#x9;(self.parameters ->size()=1 or self.apduExceptionField &lt;> APDUExceptionFields::none) and self.fields->size()=0"/>
      <details key="APDUExceptionSetReasonMethodsMustHaveOneParameterButDontNeedAnyField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = APDUExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->size()=0"/>
      <details key="APDUExceptiongetReasonMethodsMustHaveOneParameterAndShortField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = APDUExceptionMethods::getReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="IfAPDUExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfAPDUExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfAPDUExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ifElse implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.apduExceptionField &lt;> APDUExceptionFields::none"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//APDUExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="apduExceptionField" eType="#//APDUExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="APDUExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="BAD_LENGTH" value="1"/>
    <eLiterals name="BUFFER_BOUNDS" value="2"/>
    <eLiterals name="ILLEGAL_USE" value="3"/>
    <eLiterals name="IO_ERROR" value="4"/>
    <eLiterals name="NO_T0_GETRESPONSE" value="5"/>
    <eLiterals name="NO_T0_REISSUE" value="6"/>
    <eLiterals name="T1_IFD_ABORT" value="7"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="APDUExceptionMethods">
    <eLiterals name="none"/>
    <eLiterals name="APDUException" value="1"/>
    <eLiterals name="throwIt" value="2"/>
    <eLiterals name="getReason" value="3"/>
    <eLiterals name="setReason" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CryptoException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="CryptoExceptionThrowItisSTATICAndMethodsMustHaveOneParameterOR1CryptoExceptionField CryptoExceptionSetReasonMethodsMustHaveOneParameterOR1CryptoExceptionFieldButDontNeedField IfCryptoExceptionUseTryCatchJustAddOneField IfCryptoExceptionUseThrowNewJustAddOneField IfCryptoExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField CryptoExceptiongetReasonMethodsNeedShortFieldButDontNeedAnyParameters"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="CryptoExceptionThrowItisSTATICAndMethodsMustHaveOneParameterOR1CryptoExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CryptoExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.cryptoExceptionField &lt;> CryptoExceptionFields::none"/>
      <details key="CryptoExceptionSetReasonMethodsMustHaveOneParameterOR1CryptoExceptionFieldButDontNeedField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CryptoExceptionMethods::setReason implies&#xA;&#x9;&#x9;(self.parameters ->size()=1 or self.cryptoExceptionField &lt;> CryptoExceptionFields::none) and self.fields->size()=0"/>
      <details key="IfCryptoExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfCryptoExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfCryptoExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ifElse implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.cryptoExceptionField &lt;> CryptoExceptionFields::none"/>
      <details key="CryptoExceptiongetReasonMethodsNeedShortFieldButDontNeedAnyParameters"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = CryptoExceptionMethods::getReason implies&#xA;&#x9;&#x9;self.parameters ->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cryptoExceptionField" eType="#//CryptoExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//CryptoExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="CryptoExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="UNINITIALIZED_KEY" value="1"/>
    <eLiterals name="NO_SUCH_ALGORITHM" value="2"/>
    <eLiterals name="INVALID_INIT" value="3"/>
    <eLiterals name="ILLEGAL_VALUE" value="4"/>
    <eLiterals name="ILLEGAL_USE" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="CryptoExceptionMethods">
    <eLiterals name="none"/>
    <eLiterals name="CryptoException" value="1"/>
    <eLiterals name="throwIt" value="2"/>
    <eLiterals name="getReason" value="3"/>
    <eLiterals name="setReason" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PINException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="PINExceptionThrowItMethodsMustHave1ParameterOrsystemExceptionField PINExceptionSetReasonMethodsMustHaveOneParameterOrsystemExceptionField IfPINExceptionUseTryCatchJustAddOneField IfPINExceptionUseThrowNewJustAddOneField PINExceptionEqualsMethodsMustHaveOneObjectTypeParameter IfPINExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="PINExceptionThrowItMethodsMustHave1ParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = PINExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.pinExceptionField &lt;> PINExceptionFields::none"/>
      <details key="PINExceptionSetReasonMethodsMustHaveOneParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = PINExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.pinExceptionField &lt;> PINExceptionFields::none"/>
      <details key="IfPINExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfPINExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="PINExceptionEqualsMethodsMustHaveOneObjectTypeParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = PINExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="IfPINExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ifElse implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.pinExceptionField &lt;> PINExceptionFields::none"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pinExceptionField" eType="#//PINExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//PINExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PINExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="ILLEGAL_VALUE" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PINExceptionMethods">
    <eLiterals name="PINException"/>
    <eLiterals name="throwIt" value="1"/>
    <eLiterals name="getReason" value="2"/>
    <eLiterals name="setReason" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ISOException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ISOExceptionThrowItisSTATICAndMethodsMustHaveOneParameter ISOExceptionMethodsMustHaveOneParameter ISOExceptionSetReasonMethodsMustHaveOneParameter IfISOExceptionUseTryCatchJustAddOneField IfISOExceptionUseThrowNewJustAddOneField ISOExceptionEqualsMethodsMustHaveOneObjectTypeParameter ISOExceptiongetReasonMethodsDontNeedAnyParameterButNeedShortField ISOExceptionsetReasonMethodsNeed1ParameterButDontNeedAnyField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ISOExceptionThrowItisSTATICAndMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ISOExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="ISOExceptionMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ISOExceptionMethods::ISOException implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="ISOExceptionSetReasonMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ISOExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="IfISOExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfISOExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="ISOExceptionEqualsMethodsMustHaveOneObjectTypeParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ISOExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="ISOExceptiongetReasonMethodsDontNeedAnyParameterButNeedShortField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ISOExceptionMethods::getReason implies&#xA;&#x9;&#x9;self.parameters ->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ISOExceptionsetReasonMethodsNeed1ParameterButDontNeedAnyField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ISOExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ISOExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ISOExceptionMethods">
    <eLiterals name="ISOException"/>
    <eLiterals name="throwIt" value="1"/>
    <eLiterals name="getReason" value="2"/>
    <eLiterals name="setReason" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ServiceException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ServiceExceptionThrowItMethodsMustHaveOneParameter ServiceExceptionSetReasonMethodsMustHaveOneParameter IfServiceExceptionUseTryCatchJustAddOneField IfServiceExceptionUseThrowNewJustAddOneField ServiceExceptionEqualsMethodsMustHaveOneObjectTypeParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ServiceExceptionThrowItMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ServiceExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="ServiceExceptionSetReasonMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ServiceExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="IfServiceExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfServiceExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="ServiceExceptionEqualsMethodsMustHaveOneObjectTypeParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ServiceExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="serviceExceptionField"
        eType="#//ServiceExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ServiceExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ServiceExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="CANNOT_ACCESS_IN_COMMAND" value="1"/>
    <eLiterals name="COMMAND_DATA_TOO_LONG" value="2"/>
    <eLiterals name="CANNOT_ACCESS_OUT_COMMAND" value="3"/>
    <eLiterals name="DISPATCH_TABLE_FULL" value="4"/>
    <eLiterals name="ILLEGAL_PARAM" value="5"/>
    <eLiterals name="REMOTE_OBJECT_NOT_EXPORTED" value="6"/>
    <eLiterals name="COMMAND_IS_FINISHED" value="7"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ServiceExceptionMethods">
    <eLiterals name="ServiceException"/>
    <eLiterals name="throwIt" value="1"/>
    <eLiterals name="getReason" value="2"/>
    <eLiterals name="setReason" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="SystemException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="SystemExceptionThrowItMethodsMustHaveOneParameterORsystemExceptionField SystemExceptionSetReasonMethodsMustHaveOneParameter IfSystemExceptionUseTryCatchJustAddOneField IfSystemExceptionUseThrowNewJustAddOneField SystemExceptionEqualsMethodsMustHaveOneObjectTypeParameter IfSystemExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="SystemExceptionThrowItMethodsMustHaveOneParameterORsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = SystemExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.systemExceptionField ->size()=1"/>
      <details key="SystemExceptionSetReasonMethodsMustHaveOneParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = SystemExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1"/>
      <details key="IfSystemExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfSystemExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="SystemExceptionEqualsMethodsMustHaveOneObjectTypeParameter" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = SystemExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="IfSystemExceptionUseIfElseJustAdd1ParameterOrsystemExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ExceptionUsageTypes::ifElse implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.systemExceptionField ->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="systemExceptionField" eType="#//SystemExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//SystemExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SystemExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="ILLEGAL_TRANSIENT" value="1"/>
    <eLiterals name="ILLEGAL_USE" value="2"/>
    <eLiterals name="NO_RESOURCE" value="3"/>
    <eLiterals name="NO_TRANSIENT_SPACE" value="4"/>
    <eLiterals name="ILLEGAL_AID" value="5"/>
    <eLiterals name="ILLEGAL_VALUE" value="6"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SystemExceptionMethods">
    <eLiterals name="SystemException"/>
    <eLiterals name="throwIt" value="1"/>
    <eLiterals name="getReason" value="2"/>
    <eLiterals name="setReason" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="TransactionException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="TransactionExceptionThrowItMethodsMustHaveOneParameterOR1transactionExceptionField TransactionExceptionSetReasonMethodsMustHave1ParameterOR1transactionExceptionField IfTransactionExceptionUseTryCatchJustAddOneField IfTransactionExceptionUseThrowNewJustAddOneField TransactionExceptionEqualsMethodsMustHaveOneObjectTypeParameter IfTransactionExceptionUseIfElseJustAddOneFieldOR1transactionExceptionField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="TransactionExceptionThrowItMethodsMustHaveOneParameterOR1transactionExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = TransactionExceptionMethods::throwIt implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.transactionExceptionField&lt;>TransactionExceptionFields::none"/>
      <details key="TransactionExceptionSetReasonMethodsMustHave1ParameterOR1transactionExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = TransactionExceptionMethods::setReason implies&#xA;&#x9;&#x9;self.parameters ->size()=1 or self.transactionExceptionField&lt;>TransactionExceptionFields::none"/>
      <details key="IfTransactionExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfTransactionExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="TransactionExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = TransactionExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="IfTransactionExceptionUseIfElseJustAddOneFieldOR1transactionExceptionField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ifElse implies&#xA;&#x9;&#x9;self.fields ->size()=1 or self.transactionExceptionField&lt;>TransactionExceptionFields::none"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="transactionExceptionField"
        eType="#//TransactionExceptionFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//TransactionExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="TransactionExceptionMethods">
    <eLiterals name="TransactionException"/>
    <eLiterals name="throwIt" value="1"/>
    <eLiterals name="getReason" value="2"/>
    <eLiterals name="setReason" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="TransactionExceptionFields">
    <eLiterals name="none"/>
    <eLiterals name="INTERNAL_FAILURE" value="1"/>
    <eLiterals name="BUFFER_FULL" value="2"/>
    <eLiterals name="IN_PROGRESS" value="3"/>
    <eLiterals name="NOT_IN_PROGRESS" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ArithmeticException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfArithmeticExceptionUseTryCatchJustAddOneField IfArithmeticExceptionUseThrowNewJustAddOneField ArithmeticExceptionEqualsMethodsMustHaveOneParameterAndBooleanfield ArithmeticExceptionMethodDontNeedAnyParametersOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfArithmeticExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfArithmeticExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="ArithmeticExceptionEqualsMethodsMustHaveOneParameterAndBooleanfield"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ArithmeticExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::boolean)"/>
      <details key="ArithmeticExceptionMethodDontNeedAnyParametersOrFields" value="&#xA;&#x9;&#x9;self.method = ArithmeticExceptionMethods::ArithmeticException implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ArithmeticExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ArithmeticExceptionMethods">
    <eLiterals name="ArithmeticException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ArrayStoreException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfArrayStoreExceptionUseTryCatchJustAddOneField IfArrayStoreExceptionUseThrowNewJustAddOneField ArrayStoreExceptionEqualsMethodsMustHaveOneObjectTypeParameter ArrayStoreExceptionMethodDontNeedAnyParametersOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfArrayStoreExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfArrayStoreExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="ArrayStoreExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ArrayStoreExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="ArrayStoreExceptionMethodDontNeedAnyParametersOrFields" value="&#xA;&#x9;&#x9;self.method = ArrayStoreExceptionMethods::ArrayStoreException implies&#xA;&#x9;&#x9;self.parameters->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ArrayStoreExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ArrayStoreExceptionMethods">
    <eLiterals name="ArrayStoreException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ClassCastException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfClassCastExceptionUseTryCatchJustAddOneField IfClassCastExceptionUseThrowNewJustAddOneField ClassCastExceptionEqualsMethodsMustHaveOneParameterAndBooleanField ClassCastExceptionMethodDontNeedAnyParametersOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfClassCastExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfClassCastExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="ClassCastExceptionEqualsMethodsMustHaveOneParameterAndBooleanField"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ClassCastExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::boolean)"/>
      <details key="ClassCastExceptionMethodDontNeedAnyParametersOrFields" value="&#xA;&#x9;&#x9;self.method = ClassCastExceptionMethods::ClassCastException implies&#xA;&#x9;&#x9;self.parameters->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ClassCastExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ClassCastExceptionMethods">
    <eLiterals name="ClassCastException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="IndexOutOfBoundsException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfIndexOutOfBoundsExceptionUseTryCatchJustAddOneField IfIndexOutOfBoundsExceptionUseThrowNewJustAddOneField IndexOutOfBoundsExceptionEqualsMethodsMustHaveOneObjectTypeParameter IndexOutOfBoundsExceptionMethodsDoNotNeedAnyParameterOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfIndexOutOfBoundsExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfIndexOutOfBoundsExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IndexOutOfBoundsExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = IndexOutOfBoundsExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="IndexOutOfBoundsExceptionMethodsDoNotNeedAnyParameterOrFields"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = IndexOutOfBoundsExceptionMethods::IndexOutOfBoundsException implies&#xA;&#x9;&#x9;self.parameters ->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//IndexOutOfBoundsExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="IndexOutOfBoundsExceptionMethods">
    <eLiterals name="IndexOutOfBoundsException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ArrayIndexOutOfBoundsException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfArrayIndexOutOfBoundsExceptionUseTryCatchJustAddOneField IfArrayIndexOutOfBoundsExceptionUseThrowNewJustAddOneField ArrayIndexOutOfBoundsExceptionEqualsMethodsMustHaveOneObjectTypeParameter ArrayIndexOutOfBoundsExceptionMethodsDoNotNeedAnyParameterOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfArrayIndexOutOfBoundsExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfArrayIndexOutOfBoundsExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="ArrayIndexOutOfBoundsExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ArrayIndexOutOfBoundsExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="ArrayIndexOutOfBoundsExceptionMethodsDoNotNeedAnyParameterOrFields"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = ArrayIndexOutOfBoundsExceptionMethods::ArrayIndexOutOfBoundsException implies&#xA;&#x9;&#x9;self.parameters ->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ArrayIndexOutOfBoundsExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ArrayIndexOutOfBoundsExceptionMethods">
    <eLiterals name="ArrayIndexOutOfBoundsException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="NegativeArraySizeException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfNegativeArraySizeExceptionUseTryCatchJustAddOneField IfNegativeArraySizeExceptionUseThrowNewJustAddOneField NegativeArraySizeExceptionEqualsMethodsMustHaveOneObjectTypeParameter NegativeArraySizeExceptionDoNotNeedAnyParameterOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfNegativeArraySizeExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfNegativeArraySizeExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="NegativeArraySizeExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = NegativeArraySizeExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="NegativeArraySizeExceptionDoNotNeedAnyParameterOrFields" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = NegativeArraySizeExceptionMethods::NegativeArraySizeException implies&#xA;&#x9;&#x9;self.parameters ->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//NegativeArraySizeExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="NegativeArraySizeExceptionMethods">
    <eLiterals name="NegativeArraySizeException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="NullPointerException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfNullPointerExceptionUseTryCatchJustAddOneField IfNullPointerExceptionUseThrowNewJustAddOneField NullPointerExceptionEqualsMethodsMustHaveOneObjectTypeParameter NullPointerExceptionDoNotNeedAnyParameterOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfNullPointerExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfNullPointerExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="NullPointerExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = NullPointerExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="NullPointerExceptionDoNotNeedAnyParameterOrFields" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = NullPointerExceptionMethods::NullPointerException implies&#xA;&#x9;&#x9;self.parameters ->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//NullPointerExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="NullPointerExceptionMethods">
    <eLiterals name="NullPointerException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="SecurityException">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="IfSecurityExceptionUseTryCatchJustAddOneField IfSecurityExceptionUseThrowNewJustAddOneField SecurityExceptionEqualsMethodsMustHaveOneObjectTypeParameter SecurityExceptionDoNotNeedAnyParameterOrFields"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="IfSecurityExceptionUseTryCatchJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::tryCatch implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="IfSecurityExceptionUseThrowNewJustAddOneField" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.exceptionUsageType = ExceptionUsageTypes::ThrowNew implies&#xA;&#x9;&#x9;self.fields ->size()=1"/>
      <details key="SecurityExceptionEqualsMethodsMustHaveOneObjectTypeParameter"
          value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = SecurityExceptionMethods::equals implies&#xA;&#x9;&#x9;self.parameters ->size()=1 and self.parameters->forAll(x|x.dataType = DataTypes::Object)"/>
      <details key="SecurityExceptionDoNotNeedAnyParameterOrFields" value="&#x9;&#x9;&#x9; &#xA;&#x9;&#x9;self.method = SecurityExceptionMethods::SecurityException implies&#xA;&#x9;&#x9;self.parameters ->size()=0 or self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//SecurityExceptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionUsageType" eType="#//ExceptionUsageTypes"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SecurityExceptionMethods">
    <eLiterals name="SecurityException"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AID">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="AIDMethodNeedsThreeParameter AIDequalsMethodNeedsOneOrThreeParameterAndNeedBooleanField AIDgetPartialBytesMethodNeeds4ParameterAndNeedByteField AIDRIDEqualsMethodNeeds1ParameterAndNeedBooleanFiel AIDpartialEqualsMethodNeeds3ParameterAndNeedBooleanField AIDgetBytesMethodNeeds2ParameterAndNeedByteField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="AIDMethodNeedsThreeParameter" value="&#xA;&#x9;&#x9;self.method=AIDMethods::AID implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="AIDequalsMethodNeedsOneOrThreeParameterAndNeedBooleanField" value="&#xA;&#x9;&#x9;self.method=AIDMethods::equals implies&#xA;&#x9;&#x9;(self.parameters->size()=1 or self.parameters->size()=3) and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="AIDgetPartialBytesMethodNeeds4ParameterAndNeedByteField" value="&#xA;&#x9;&#x9;self.method=AIDMethods::getPartialBytes implies&#xA;&#x9;&#x9;self.parameters->size()=4 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="AIDRIDEqualsMethodNeeds1ParameterAndNeedBooleanFiel" value="&#xA;&#x9;&#x9;self.method=AIDMethods::RIDEquals implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="AIDpartialEqualsMethodNeeds3ParameterAndNeedBooleanField" value="&#xA;&#x9;&#x9;self.method=AIDMethods::partialEquals implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
      <details key="AIDgetBytesMethodNeeds2ParameterAndNeedByteField" value="&#xA;&#x9;&#x9;self.method=AIDMethods::getBytes implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//AIDMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="AIDMethods">
    <eLiterals name="AID"/>
    <eLiterals name="equals" value="1"/>
    <eLiterals name="getPartialBytes" value="2"/>
    <eLiterals name="RIDEquals" value="3"/>
    <eLiterals name="partialEquals" value="4"/>
    <eLiterals name="getBytes" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Cipher">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="CipherdoFinalMethodNeeds5ParameterAndNeedShortFieldToReturnValue CiphergetInstanceisSTATICAndMethodNeeds2ParameterAndCipherField CipherinitMethodNeeds2OR5ParameterButDontNeedAnyField CipherupdateMethodNeeds5ParameterAndNeedShortField CipherqualsMethodNeeds1CipherParameterToCompareAndABooleanFieldDontForgetTheInitializeField CipherGetAlgorithmMethodNeeds1ByteField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="CipherdoFinalMethodNeeds5ParameterAndNeedShortFieldToReturnValue"
          value="&#xA;&#x9;&#x9;self.method=CipherMethods::doFinal implies&#xA;&#x9;&#x9;self.parameters->size()=5 and self.fields->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="CiphergetInstanceisSTATICAndMethodNeeds2ParameterAndCipherField"
          value="&#xA;&#x9;&#x9;self.method=CipherMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::Cipher)"/>
      <details key="CipherinitMethodNeeds2OR5ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=CipherMethods::init implies&#xA;&#x9;&#x9;(self.parameters->size()=2 or self.parameters->size()=5) and self.fields->size()=0"/>
      <details key="CipherupdateMethodNeeds5ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=CipherMethods::update implies&#xA;&#x9;&#x9;self.parameters->size()=5 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="CipherqualsMethodNeeds1CipherParameterToCompareAndABooleanFieldDontForgetTheInitializeField"
          value="&#xA;&#x9;&#x9;self.method=CipherMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::boolean)"/>
      <details key="CipherGetAlgorithmMethodNeeds1ByteField" value="&#xA;&#x9;&#x9;self.method=CipherMethods::getAlgorithm implies&#xA;&#x9;&#x9;self.fields->size()=1 and self.fields->forAll(x|x.dataType = DataTypes::byte)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cipherField" eType="#//CipherFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//CipherMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="CipherFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_DES_CBC_NOPAD" value="1"/>
    <eLiterals name="ALG_DES_CBC_ISO9797_M1" value="2"/>
    <eLiterals name="ALG_DES_CBC_ISO9797_M2" value="3"/>
    <eLiterals name="ALG_DES_CBC_PKCS5" value="4"/>
    <eLiterals name="ALG_DES_ECB_NOPAD" value="5"/>
    <eLiterals name="ALG_DES_ECB_ISO9797_M1" value="6"/>
    <eLiterals name="ALG_DES_ECB_ISO9797_M2" value="7"/>
    <eLiterals name="ALG_DES_ECB_PKCS5" value="8"/>
    <eLiterals name="ALG_RSA_ISO14888" value="9"/>
    <eLiterals name="ALG_RSA_PKCS1" value="10"/>
    <eLiterals name="ALG_RSA_ISO9796" value="11"/>
    <eLiterals name="ALG_RSA_NOPAD" value="12"/>
    <eLiterals name="ALG_AES_BLOCK_128_CBC_NOPAD" value="13"/>
    <eLiterals name="ALG_AES_BLOCK_128_ECB_NOPAD" value="14"/>
    <eLiterals name="ALG_RSA_PKCS1_OAEP" value="15"/>
    <eLiterals name="ALG_KOREAN_SEED_ECB_NOPAD" value="16"/>
    <eLiterals name="ALG_KOREAN_SEED_CBC_NOPAD" value="17"/>
    <eLiterals name="MODE_DECRYPT" value="18"/>
    <eLiterals name="MODE_ENCRYPT" value="19"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="CipherMethods">
    <eLiterals name="Cipher"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="init" value="2"/>
    <eLiterals name="getAlgorithm" value="3"/>
    <eLiterals name="doFinal" value="4"/>
    <eLiterals name="update" value="5"/>
    <eLiterals name="equals" value="6"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Checksum">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ChecksumdoFinalMethodNeeds5ParameterAndShortField ChecksumgetInstanceMethodNeeds2ParameterAndChecksumField ChecksuminitMethodNeeds3ParameterAndButDontNeedAnyField ChecksumgetAlgorithmMethodDontNeedAnyParameterButNeedsByteField ChecksumgetInstanceMethodNeeds2Parameter ChecksuminitMethodNeeds2Parameter ChecksumupdateMethodNeeds3Parameter ChecksumqualsMethodNeeds1Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ChecksumdoFinalMethodNeeds5ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::doFinal implies&#xA;&#x9;&#x9;self.parameters->size()=5 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ChecksumgetInstanceMethodNeeds2ParameterAndChecksumField" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::Checksum)"/>
      <details key="ChecksuminitMethodNeeds3ParameterAndButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::init implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ChecksumgetAlgorithmMethodDontNeedAnyParameterButNeedsByteField"
          value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::getAlgorithm implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::byte)"/>
      <details key="ChecksumgetInstanceMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="ChecksuminitMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::init implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="ChecksumupdateMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::update implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="ChecksumqualsMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=ChecksumMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="checksumField" eType="#//ChecksumFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ChecksumMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ChecksumFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_ISO3309_CRC16" value="1"/>
    <eLiterals name="ALG_ISO3309_CRC32" value="2"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ChecksumMethods">
    <eLiterals name="Checksum"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="init" value="2"/>
    <eLiterals name="getAlgorithm" value="3"/>
    <eLiterals name="doFinal" value="4"/>
    <eLiterals name="update" value="5"/>
    <eLiterals name="equals" value="6"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="KeyAgreement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="KeyAgreementgetInstanceMethodNeeds2Parameter KeyAgreementinitMethodNeeds1Parameter KeyAgreementgenerateSecretMethodNeeds5Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="KeyAgreementgetInstanceMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=KeyAgreementMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="KeyAgreementinitMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=KeyAgreementMethods::init implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
      <details key="KeyAgreementgenerateSecretMethodNeeds5Parameter" value="&#xA;&#x9;&#x9;self.method=KeyAgreementMethods::generateSecret implies&#xA;&#x9;&#x9;self.parameters->size()=5"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="keyAgreementField" eType="#//KeyAgreementFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//KeyAgreementMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyAgreementFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_EC_SVDP_DH" value="1"/>
    <eLiterals name="ALG_EC_SVDP_DH_KDF" value="2"/>
    <eLiterals name="ALG_EC_SVDP_DHC" value="3"/>
    <eLiterals name="ALG_EC_SVDP_DHC_KDF" value="4"/>
    <eLiterals name="ALG_EC_SVDP_DH_PLAIN" value="5"/>
    <eLiterals name="ALG_EC_SVDP_DHC_PLAIN" value="6"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyAgreementMethods">
    <eLiterals name="KeyAgreement"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="init" value="2"/>
    <eLiterals name="getAlgorithm" value="3"/>
    <eLiterals name="generateSecret" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="KeyBuilder">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="KeyBuilderbuildKeyMethodNeeds3Parameter KeyBuilderqualsMethodNeeds1Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="KeyBuilderbuildKeyMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=KeyBuilderMethods::buildKey implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="KeyBuilderqualsMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=KeyBuilderMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="keyBuilderField" eType="#//KeyBuilderFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//KeyBuilderMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyBuilderFields">
    <eLiterals name="none"/>
    <eLiterals name="TYPE_DES_TRANSIENT_RESET" value="1"/>
    <eLiterals name="TYPE_DES_TRANSIENT_DESELECT" value="2"/>
    <eLiterals name="TYPE_DES" value="3"/>
    <eLiterals name="TYPE_RSA_PUBLIC" value="4"/>
    <eLiterals name="TYPE_RSA_PRIVATE" value="5"/>
    <eLiterals name="TYPE_RSA_CRT_PRIVATE" value="6"/>
    <eLiterals name="TYPE_DSA_PUBLIC" value="7"/>
    <eLiterals name="TYPE_DSA_PRIVATE" value="8"/>
    <eLiterals name="TYPE_EC_F2M_PUBLIC" value="9"/>
    <eLiterals name="TYPE_EC_F2M_PRIVATE" value="10"/>
    <eLiterals name="TYPE_EC_FP_PUBLIC" value="11"/>
    <eLiterals name="TYPE_EC_FP_PRIVATE" value="12"/>
    <eLiterals name="TYPE_AES_TRANSIENT_RESET" value="13"/>
    <eLiterals name="TYPE_AES_TRANSIENT_DESELECT" value="14"/>
    <eLiterals name="TYPE_AES" value="15"/>
    <eLiterals name="TYPE_KOREAN_SEED_TRANSIENT_RESET" value="16"/>
    <eLiterals name="TYPE_KOREAN_SEED_TRANSIENT_DESELECT" value="17"/>
    <eLiterals name="TYPE_KOREAN_SEED" value="18"/>
    <eLiterals name="TYPE_HMAC_TRANSIENT_RESET" value="19"/>
    <eLiterals name="TYPE_HMAC_TRANSIENT_DESELECT" value="20"/>
    <eLiterals name="TYPE_HMAC" value="21"/>
    <eLiterals name="LENGTH_DES" value="22"/>
    <eLiterals name="LENGTH_DES3_2KEY" value="23"/>
    <eLiterals name="LENGTH_DES3_3KEY" value="24"/>
    <eLiterals name="LENGTH_RSA_512" value="25"/>
    <eLiterals name="LENGTH_RSA_736" value="26"/>
    <eLiterals name="LENGTH_RSA_768" value="27"/>
    <eLiterals name="LENGTH_RSA_896" value="28"/>
    <eLiterals name="LENGTH_RSA_1024" value="29"/>
    <eLiterals name="LENGTH_RSA_1280" value="30"/>
    <eLiterals name="LENGTH_RSA_1536" value="31"/>
    <eLiterals name="LENGTH_RSA_1984" value="32"/>
    <eLiterals name="LENGTH_RSA_2048" value="33"/>
    <eLiterals name="LENGTH_DSA_512" value="34"/>
    <eLiterals name="LENGTH_DSA_768" value="35"/>
    <eLiterals name="LENGTH_DSA_1024" value="36"/>
    <eLiterals name="LENGTH_EC_FP_112" value="37"/>
    <eLiterals name="LENGTH_EC_F2M_113" value="38"/>
    <eLiterals name="LENGTH_EC_FP_128" value="39"/>
    <eLiterals name="LENGTH_EC_F2M_131" value="40"/>
    <eLiterals name="LENGTH_EC_FP_160" value="41"/>
    <eLiterals name="LENGTH_EC_F2M_163" value="42"/>
    <eLiterals name="LENGTH_EC_FP_192" value="43"/>
    <eLiterals name="LENGTH_EC_F2M_193" value="44"/>
    <eLiterals name="LENGTH_AES_128" value="45"/>
    <eLiterals name="LENGTH_AES_192" value="46"/>
    <eLiterals name="LENGTH_AES_256" value="47"/>
    <eLiterals name="LENGTH_KOREAN_SEED_128" value="48"/>
    <eLiterals name="LENGTH_HMAC_SHA_1_BLOCK_64" value="49"/>
    <eLiterals name="LENGTH_HMAC_SHA_256_BLOCK_64" value="50"/>
    <eLiterals name="LENGTH_HMAC_SHA_384_BLOCK_128" value="51"/>
    <eLiterals name="LENGTH_HMAC_SHA_512_BLOCK_128" value="52"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyBuilderMethods">
    <eLiterals name="buildKey"/>
    <eLiterals name="equals" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="KeyPair">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="KeyPairMethodNeeds2ParameterOR1ParameterAnd1keyPairField KeyPairqualsMethodNeeds1KeyPairParameterAndABooleanField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="KeyPairMethodNeeds2ParameterOR1ParameterAnd1keyPairField" value="&#xA;&#x9;&#x9;self.method=KeyPairMethods::KeyPair implies&#xA;&#x9;&#x9;self.parameters->size()=2 or (self.parameters->size()=1 and self.keyPairField &lt;> KeyPairFields::none)"/>
      <details key="KeyPairqualsMethodNeeds1KeyPairParameterAndABooleanField" value="Tuple {&#xA;&#x9;message : String = 'KeyPair Equals Method Return Type is Boolean and Need An Object to compare',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;self.method=KeyPairMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1&#xA;}.status"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="keyPairField" eType="#//KeyPairFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//KeyPairMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyPairFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_RSA" value="1"/>
    <eLiterals name="ALG_RSA_CRT" value="2"/>
    <eLiterals name="ALG_DSA" value="3"/>
    <eLiterals name="ALG_EC_F2M" value="4"/>
    <eLiterals name="ALG_EC_FP" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyPairMethods">
    <eLiterals name="KeyPair"/>
    <eLiterals name="genKeyPair" value="1"/>
    <eLiterals name="getPublic" value="2"/>
    <eLiterals name="getPrivate" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MessageDigest">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="MessageDigestdoFinalMethodNeeds5ParameterIFUSE1MessageDigestFieldSoMethodParameterSortingWillHasAProblem MessageDigestgetInitializedMessageDigestInstanceMethodNeeds2ParameterOR1ParameterAND1messageDigestField MessageDigestgetInstanceMethodNeeds2ParameterOR1ParameterAND1messageDigestField MessageDigestqualsMethodNeeds1Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="MessageDigestdoFinalMethodNeeds5ParameterIFUSE1MessageDigestFieldSoMethodParameterSortingWillHasAProblem"
          value="&#xA;&#x9;&#x9;self.method=MessageDigestMethods::doFinal implies&#xA;&#x9;&#x9;self.parameters->size()=5 or (self.parameters->size()=4 and self.messageDigestField&lt;>MessageDigestFields::none)"/>
      <details key="MessageDigestgetInitializedMessageDigestInstanceMethodNeeds2ParameterOR1ParameterAND1messageDigestField"
          value="&#xA;&#x9;&#x9;self.method=MessageDigestMethods::getInitializedMessageDigestInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 or (self.parameters->size()=1 and self.messageDigestField&lt;>MessageDigestFields::none)"/>
      <details key="MessageDigestgetInstanceMethodNeeds2ParameterOR1ParameterAND1messageDigestField"
          value="&#xA;&#x9;&#x9;self.method=MessageDigestMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 or (self.parameters->size()=1 and self.messageDigestField&lt;>MessageDigestFields::none)"/>
      <details key="MessageDigestqualsMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=MessageDigestMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageDigestField" eType="#//MessageDigestFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//MessageDigestMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="MessageDigestFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_SHA" value="1"/>
    <eLiterals name="ALG_MD5" value="2"/>
    <eLiterals name="ALG_RIPEMD160" value="3"/>
    <eLiterals name="ALG_SHA_256" value="4"/>
    <eLiterals name="ALG_SHA_384" value="5"/>
    <eLiterals name="ALG_SHA_512" value="6"/>
    <eLiterals name="ALG_SHA_224" value="7"/>
    <eLiterals name="LENGTH_MD5" value="8"/>
    <eLiterals name="LENGTH_RIPEMD160" value="9"/>
    <eLiterals name="LENGTH_SHA" value="10"/>
    <eLiterals name="LENGTH_SHA_256" value="11"/>
    <eLiterals name="LENGTH_SHA_384" value="12"/>
    <eLiterals name="LENGTH_SHA_512" value="13"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="MessageDigestMethods">
    <eLiterals name="MessageDigest"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="getInitializedMessageDigestInstance" value="2"/>
    <eLiterals name="getAlgorithm" value="3"/>
    <eLiterals name="getLength" value="4"/>
    <eLiterals name="doFinal" value="5"/>
    <eLiterals name="update" value="6"/>
    <eLiterals name="reset" value="7"/>
    <eLiterals name="equals" value="8"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="InitializedMessageDigest">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="InitializedMessageDigestdoFinalMethodNeeds5ParameterAndShortField InitializedMessageDigestgetInitializedMessageDigestInstanceMethodNeeds2ParameterAndInitializedMessageDigestField InitializedMessageDigestgetInstanceMethodNeeds2ParameterAndMessageDigestField InitializedMessageDigestsetInitialDigestMethodNeeds6ParameterButDontNeedAnyField InitializedMessageDigestqualsMethodNeeds1Parameter InitializedMessageDigestgetAlgorithmMethodNeedByteFieldButDontNeedAnyParameter InitializedMessageDigestgetLengthMethodNeedsShortFieldButDontNeedAnyParameters InitializedMessageDigestresetMethodDontNeedAnyParameterOrField InitializedMessageDigestupdateMethodNeeds3ParameterButDontNeedAnyField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="InitializedMessageDigestdoFinalMethodNeeds5ParameterAndShortField"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::doFinal implies&#xA;&#x9;&#x9;self.parameters->size()=5 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="InitializedMessageDigestgetInitializedMessageDigestInstanceMethodNeeds2ParameterAndInitializedMessageDigestField"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::getInitializedMessageDigestInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::InitializedMessageDigest)"/>
      <details key="InitializedMessageDigestgetInstanceMethodNeeds2ParameterAndMessageDigestField"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::MessageDigest)"/>
      <details key="InitializedMessageDigestsetInitialDigestMethodNeeds6ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::setInitialDigest implies&#xA;&#x9;&#x9;self.parameters->size()=6 and self.fields->size()=0"/>
      <details key="InitializedMessageDigestqualsMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
      <details key="InitializedMessageDigestgetAlgorithmMethodNeedByteFieldButDontNeedAnyParameter"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::getAlgorithm implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::byte)"/>
      <details key="InitializedMessageDigestgetLengthMethodNeedsShortFieldButDontNeedAnyParameters"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::getLength implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="InitializedMessageDigestresetMethodDontNeedAnyParameterOrField"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::reset implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->size()=0"/>
      <details key="InitializedMessageDigestupdateMethodNeeds3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=InitializedMessageDigestMethods::update implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="initializedMessageDigestField"
        eType="#//InitializedMessageDigestFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//InitializedMessageDigestMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="InitializedMessageDigestFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_SHA" value="1"/>
    <eLiterals name="ALG_MD5" value="2"/>
    <eLiterals name="ALG_RIPEMD160" value="3"/>
    <eLiterals name="ALG_SHA_256" value="4"/>
    <eLiterals name="ALG_SHA_384" value="5"/>
    <eLiterals name="ALG_SHA_512" value="6"/>
    <eLiterals name="ALG_SHA_224" value="7"/>
    <eLiterals name="LENGTH_MD5" value="8"/>
    <eLiterals name="LENGTH_RIPEMD160" value="9"/>
    <eLiterals name="LENGTH_SHA" value="10"/>
    <eLiterals name="LENGTH_SHA_256" value="11"/>
    <eLiterals name="LENGTH_SHA_384" value="12"/>
    <eLiterals name="LENGTH_SHA_512" value="13"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="InitializedMessageDigestMethods">
    <eLiterals name="InitializedMessageDigest"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="getInitializedMessageDigestInstance" value="2"/>
    <eLiterals name="getAlgorithm" value="3"/>
    <eLiterals name="getLength" value="4"/>
    <eLiterals name="doFinal" value="5"/>
    <eLiterals name="update" value="6"/>
    <eLiterals name="reset" value="7"/>
    <eLiterals name="equals" value="8"/>
    <eLiterals name="setInitialDigest" value="9"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RandomData">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="RandomDataequalsMethodNeeds1Parameter RandomDatagetInstanceMethodNeeds1ParameterOR1randomDataField RandomDatagenerateDataMethodNeeds3Parameter RandomDatasetSeedMethodNeeds3Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="RandomDataequalsMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=RandomDataMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
      <details key="RandomDatagetInstanceMethodNeeds1ParameterOR1randomDataField"
          value="&#xA;&#x9;&#x9;self.method=RandomDataMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=1 or self.randomDataField &lt;> RandomDataFields::none"/>
      <details key="RandomDatagenerateDataMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RandomDataMethods::generateData implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RandomDatasetSeedMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RandomDataMethods::setSeed implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="randomDataField" eType="#//RandomDataFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//RandomDataMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="RandomDataFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_PSEUDO_RANDOM" value="1"/>
    <eLiterals name="ALG_SECURE_RANDOM" value="2"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="RandomDataMethods">
    <eLiterals name="RandomData"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="generateData" value="2"/>
    <eLiterals name="setSeed" value="3"/>
    <eLiterals name="equals" value="4"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Signature">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="SignatureequalsMethodNeeds1Parameter SignaturegetInstanceMethodNeeds2ParameterOR1ParameterAnd1signatureField SignatureinitMethodNeeds2OR5ParameterOR1ParameterAND1signatureFieldOR4ParameteAND1signatureField SignatureupdateMethodNeeds3Parameter SignaturesignMethodNeeds5Parameter SignatureverifyMethodNeeds6Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="SignatureequalsMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMethods::equals implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
      <details key="SignaturegetInstanceMethodNeeds2ParameterOR1ParameterAnd1signatureField"
          value="&#xA;&#x9;&#x9;self.method=SignatureMethods::getInstance implies&#xA;&#x9;&#x9;self.parameters->size()=2 or (self.parameters->size()=1 and self.signatureField&lt;>SignatureFields::none)"/>
      <details key="SignatureinitMethodNeeds2OR5ParameterOR1ParameterAND1signatureFieldOR4ParameteAND1signatureField"
          value="&#xA;&#x9;&#x9;self.method=SignatureMethods::init implies&#xA;&#x9;&#x9;self.parameters->size()=2 or self.parameters->size()=5 or (self.parameters->size()=1 and self.signatureField&lt;>SignatureFields::none) or (self.parameters->size()=4 and self.signatureField&lt;>SignatureFields::none)"/>
      <details key="SignatureupdateMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMethods::update implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="SignaturesignMethodNeeds5Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMethods::sign implies&#xA;&#x9;&#x9;self.parameters->size()=5"/>
      <details key="SignatureverifyMethodNeeds6Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMethods::verify implies&#xA;&#x9;&#x9;self.parameters->size()=6"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="signatureField" eType="#//SignatureFields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//SignatureMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SignatureFields">
    <eLiterals name="none"/>
    <eLiterals name="ALG_DES_MAC4_NOPAD" value="1"/>
    <eLiterals name="ALG_DES_MAC8_NOPAD" value="2"/>
    <eLiterals name="ALG_DES_MAC4_ISO9797_M1" value="3"/>
    <eLiterals name="ALG_DES_MAC8_ISO9797_M1" value="4"/>
    <eLiterals name="ALG_DES_MAC4_ISO9797_M2" value="5"/>
    <eLiterals name="ALG_DES_MAC8_ISO9797_M2" value="6"/>
    <eLiterals name="ALG_DES_MAC4_PKCS5" value="7"/>
    <eLiterals name="ALG_DES_MAC8_PKCS5" value="8"/>
    <eLiterals name="ALG_RSA_SHA_ISO9796" value="9"/>
    <eLiterals name="ALG_RSA_SHA_PKCS1" value="10"/>
    <eLiterals name="ALG_RSA_MD5_PKCS1" value="11"/>
    <eLiterals name="ALG_RSA_RIPEMD160_ISO9796" value="12"/>
    <eLiterals name="ALG_RSA_RIPEMD160_PKCS1" value="11"/>
    <eLiterals name="ALG_DSA_SHA" value="13"/>
    <eLiterals name="ALG_RSA_SHA_RFC2409" value="14"/>
    <eLiterals name="ALG_RSA_MD5_RFC2409" value="15"/>
    <eLiterals name="ALG_ECDSA_SHA" value="16"/>
    <eLiterals name="ALG_AES_MAC_128_NOPAD" value="17"/>
    <eLiterals name="ALG_DES_MAC4_ISO9797_1_M2_ALG3" value="18"/>
    <eLiterals name="ALG_DES_MAC8_ISO9797_1_M2_ALG3" value="19"/>
    <eLiterals name="ALG_RSA_SHA_PKCS1_PSS" value="20"/>
    <eLiterals name="ALG_RSA_MD5_PKCS1_PSS" value="21"/>
    <eLiterals name="ALG_RSA_RIPEMD160_PKCS1_PSS" value="22"/>
    <eLiterals name="ALG_HMAC_SHA1" value="23"/>
    <eLiterals name="ALG_HMAC_SHA_256" value="24"/>
    <eLiterals name="ALG_HMAC_SHA_384" value="25"/>
    <eLiterals name="ALG_HMAC_SHA_512" value="26"/>
    <eLiterals name="ALG_HMAC_MD5" value="27"/>
    <eLiterals name="ALG_HMAC_RIPEMD160" value="28"/>
    <eLiterals name="ALG_RSA_SHA_ISO9796_MR" value="29"/>
    <eLiterals name="ALG_RSA_RIPEMD160_ISO9796_MR" value="30"/>
    <eLiterals name="ALG_KOREAN_SEED_MAC_NOPAD" value="31"/>
    <eLiterals name="ALG_ECDSA_SHA_256" value="32"/>
    <eLiterals name="ALG_ECDSA_SHA_384" value="33"/>
    <eLiterals name="ALG_AES_MAC_192_NOPAD" value="34"/>
    <eLiterals name="ALG_AES_MAC_256_NOPAD" value="35"/>
    <eLiterals name="ALG_ECDSA_SHA_224" value="36"/>
    <eLiterals name="ALG_ECDSA_SHA_512" value="37"/>
    <eLiterals name="ALG_RSA_SHA_224_PKCS1" value="38"/>
    <eLiterals name="ALG_RSA_SHA_256_PKCS1" value="39"/>
    <eLiterals name="ALG_RSA_SHA_384_PKCS1" value="40"/>
    <eLiterals name="ALG_RSA_SHA_512_PKCS1" value="41"/>
    <eLiterals name="ALG_RSA_SHA_224_PKCS1_PSS" value="42"/>
    <eLiterals name="ALG_RSA_SHA_256_PKCS1_PSS" value="43"/>
    <eLiterals name="ALG_RSA_SHA_384_PKCS1_PSS" value="44"/>
    <eLiterals name="ALG_RSA_SHA_512_PKCS1_PSS" value="45"/>
    <eLiterals name="MODE_SIGN" value="46"/>
    <eLiterals name="MODE_VERIFY" value="47"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SignatureMethods">
    <eLiterals name="Signature"/>
    <eLiterals name="getInstance" value="1"/>
    <eLiterals name="init" value="2"/>
    <eLiterals name="getAlgorithm" value="3"/>
    <eLiterals name="getLength" value="4"/>
    <eLiterals name="update" value="5"/>
    <eLiterals name="sign" value="6"/>
    <eLiterals name="verify" value="7"/>
    <eLiterals name="equals" value="8"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DSAKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="DSAKeysetPMethodNeeds3ParameterButDontNeedAnyField DSAKeysetQMethodNeeds3ParameterButDontNeedAnyField DSAKeysetGMethodNeeds3ParameterButDontNeedAnyField DSAKeygetPMethodNeeds2ParameterAndShortField DSAKeygetQMethodNeeds2ParameterAndShortField DSAKeygetGMethodNeeds2ParameterAndNeedShortField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="DSAKeysetPMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAKeyMethods::setP implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAKeysetQMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAKeyMethods::setQ implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAKeysetGMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAKeyMethods::setG implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAKeygetPMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAKeyMethods::getP implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAKeygetQMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAKeyMethods::getQ implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAKeygetGMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=DSAKeyMethods::getG implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//DSAKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="DSAKeyMethods">
    <eLiterals name="setP"/>
    <eLiterals name="setQ" value="1"/>
    <eLiterals name="setG" value="2"/>
    <eLiterals name="getP" value="3"/>
    <eLiterals name="getQ" value="4"/>
    <eLiterals name="getG" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DSAPrivateKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="DSAPrivateKeysetPMethodNeeds3ParameterButDontNeedAnyField DSAPrivateKeysetQMethodNeeds3ParameterButDontNeedAnyField DSAPrivateKeysetGMethodNeeds3ParameterButDontNeedAnyField DSAPrivateKeygetPMethodNeeds2ParameterAndShortField DSAPrivateKeygetQMethodNeeds2ParameterAndShortField DSAPrivateKeygetGMethodNeeds2ParameterAndShortField DSAPrivateKeygsetXMethodNeeds3ParameterButDontNeedField DSAPrivateKeygetXMethodNeeds2ParameterAndShortField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="DSAPrivateKeysetPMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::setP implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPrivateKeysetQMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::setQ implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPrivateKeysetGMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::setG implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPrivateKeygetPMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::getP implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAPrivateKeygetQMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::getQ implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAPrivateKeygetGMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::getG implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAPrivateKeygsetXMethodNeeds3ParameterButDontNeedField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::setX implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPrivateKeygetXMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPrivateKeyMethods::getX implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//DSAPrivateKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="DSAPrivateKeyMethods">
    <eLiterals name="setX"/>
    <eLiterals name="getX" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
    <eLiterals name="setP" value="6"/>
    <eLiterals name="setQ" value="7"/>
    <eLiterals name="setG" value="8"/>
    <eLiterals name="getP" value="9"/>
    <eLiterals name="getQ" value="10"/>
    <eLiterals name="getG" value="11"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DSAPublicKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="DSAPublicKeyMethodssetPMethodNeeds3ParameterButDontNeedAnyField DSAPublicKeyMethodssetQMethodNeeds3ParameterButDontNeedAnyField DSAPublicKeyMethodssetGMethodNeeds3ParameterButDontNeedAnyField DSAPublicKeyMethodsgetPMethodNeeds2ParameterAndShortField DSAPublicKeyMethodsgetQMethodNeeds2ParameterAndShortField DSAPublicKeyMethodsgetGMethodNeeds2ParameterAndShortField DSAPublicKeygsetXMethodNeeds3ParameterButDontNeedAnyField DSAPublicKeygetXMethodNeeds2ParameterAndNeedShortField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="DSAPublicKeyMethodssetPMethodNeeds3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::setP implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPublicKeyMethodssetQMethodNeeds3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::setQ implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPublicKeyMethodssetGMethodNeeds3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::setG implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPublicKeyMethodsgetPMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::getP implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAPublicKeyMethodsgetQMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::getQ implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAPublicKeyMethodsgetGMethodNeeds2ParameterAndShortField" value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::getG implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DSAPublicKeygsetXMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::setY implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="DSAPublicKeygetXMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=DSAPublicKeyMethods::getY implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//DSAPublicKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="DSAPublicKeyMethods">
    <eLiterals name="setY"/>
    <eLiterals name="getY" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
    <eLiterals name="setP" value="6"/>
    <eLiterals name="setQ" value="7"/>
    <eLiterals name="setG" value="8"/>
    <eLiterals name="getP" value="9"/>
    <eLiterals name="getQ" value="10"/>
    <eLiterals name="getG" value="11"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ECKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ECKeysetFieldFPMethodNeeds3ParameterButDontNeedAnyField ECKeysetsetFieldF2MMethodNeeds1OR3ParameterButDontNeedAnyField ECKeysetAMethodNeeds3ParameterButDontNeedAnyField ECKeysetBMethodNeeds3ParameterButDontNeedAnyField ECKeysetGMethodNeeds3ParameterButDontNeedAnyField ECKeysetRMethodNeeds3ParameterButDontNeedAnyField ECKeysetKMethodNeeds1ParameterButDontNeedAnyField ECKeygetFieldMethodNeeds2ParameterAndNeedShortField ECKeygetAMethodNeeds2ParameterAndNeedShortField ECKeygetBMethodNeeds2ParameterAndNeedShortField ECKeygetGMethodNeeds2ParameterAndNeedShortField ECKeygetRMethodNeeds2ParameterAndNeedShortField ECKeygetKMethodNeedsShortFieldButDontNeedAnyParameters"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ECKeysetFieldFPMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setFieldFP implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECKeysetsetFieldF2MMethodNeeds1OR3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setFieldF2M implies&#xA;&#x9;&#x9;(self.parameters->size()=1 or self.parameters->size()=3) and self.fields->size()=0"/>
      <details key="ECKeysetAMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setA implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECKeysetBMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setB implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECKeysetGMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setG implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECKeysetRMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setR implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECKeysetKMethodNeeds1ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::setK implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=0"/>
      <details key="ECKeygetFieldMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::getField implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECKeygetAMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::getA implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECKeygetBMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::getB implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECKeygetGMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::getG implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECKeygetRMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::getR implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECKeygetKMethodNeedsShortFieldButDontNeedAnyParameters" value="&#xA;&#x9;&#x9;self.method=ECKeyMethods::getK implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ECKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ECKeyMethods">
    <eLiterals name="setFieldFP"/>
    <eLiterals name="setFieldF2M" value="1"/>
    <eLiterals name="setA" value="2"/>
    <eLiterals name="setB" value="3"/>
    <eLiterals name="setG" value="4"/>
    <eLiterals name="setR" value="5"/>
    <eLiterals name="setK" value="6"/>
    <eLiterals name="getField" value="7"/>
    <eLiterals name="getA" value="8"/>
    <eLiterals name="getB" value="9"/>
    <eLiterals name="getG" value="10"/>
    <eLiterals name="getR" value="11"/>
    <eLiterals name="getK" value="12"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ECPrivateKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ECPrivateKeysetSMethodNeeds3ParameterButDontNeedAnyField ECPrivateKeygetSMethodNeeds2ParameterAndNeedShortField ECPrivateKeysetFieldFPMethodNeeds3ParameterButDontNeedAnyField ECPrivateKeysetsetFieldF2MMethodNeeds1OR3ParameterButDontNeedAnyField ECPrivateKeysetAMethodNeeds3ParameterButDontNeedAnyField ECPrivateKeysetBMethodNeeds3ParameterButDontNeedAnyField ECPrivateKeysetGMethodNeeds3ParameterButDontNeedAnyField ECPrivateKeysetRMethodNeeds3ParameterButDontNeedAnyField ECPrivateKeysetKMethodNeeds1ParameterButDontNeedAnyField ECPrivateKeygetFieldMethodNeeds2ParameterAndNeedShortField ECPrivateKeyNeeds2ParameterAndNeedShortField ECPrivateKeygetBMethodNeeds2ParameterAndNeedShortField ECPrivateKeygetGMethodNeeds2ParameterAndNeedShortField ECPrivateKeygetRMethodNeeds2ParameterAndNeedShortField ECPrivateKeygetKMethodNeedsShortFieldButDontNeedAnyParameters"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ECPrivateKeysetSMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setS implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPrivateKeygetSMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getS implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeysetFieldFPMethodNeeds3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setFieldFP implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPrivateKeysetsetFieldF2MMethodNeeds1OR3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setFieldF2M implies&#xA;&#x9;&#x9;(self.parameters->size()=1 or self.parameters->size()=3) and self.fields->size()=0"/>
      <details key="ECPrivateKeysetAMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setA implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPrivateKeysetBMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setB implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPrivateKeysetGMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setG implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPrivateKeysetRMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setR implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPrivateKeysetKMethodNeeds1ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setK implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=0"/>
      <details key="ECPrivateKeygetFieldMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getField implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeyNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getA implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeygetBMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getB implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeygetGMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getG implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeygetRMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getR implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeygetKMethodNeedsShortFieldButDontNeedAnyParameters"
          value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::getK implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ECPrivateKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ECPrivateKeyMethods">
    <eLiterals name="setS"/>
    <eLiterals name="getS" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
    <eLiterals name="setFieldFP" value="6"/>
    <eLiterals name="setFieldF2M" value="7"/>
    <eLiterals name="setA" value="8"/>
    <eLiterals name="setB" value="9"/>
    <eLiterals name="setG" value="10"/>
    <eLiterals name="setR" value="11"/>
    <eLiterals name="setK" value="12"/>
    <eLiterals name="getField" value="13"/>
    <eLiterals name="getA" value="14"/>
    <eLiterals name="getB" value="15"/>
    <eLiterals name="getG" value="16"/>
    <eLiterals name="getR" value="17"/>
    <eLiterals name="getK" value="18"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ECPublicKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="ECPublicKeysetWMethodNeeds3ParameterButDontNeedAnyField ECPublicKeygetWMethodNeeds2ParameterAndNeedShortField ECPrivateKeysetFieldFPMethodNeeds3ParameterButDontNeedAnyField ECPublicKeysetsetFieldF2MMethodNeeds1OR3ParameterButDontNeedAnyField ECPublicKeysetAMethodNeeds3ParameterButDontNeedAnyField ECPublicKeysetBMethodNeeds3ParameterButDontNeedAnyField ECPublicKeysetGMethodNeeds3ParameterButDontNeedAnyField ECPublicKeysetRMethodNeeds3ParameterButDontNeedAnyField ECPublicKeysetKMethodNeeds1ParameterButDontNeedAnyField ECPublicKeygetFieldMethodNeeds2ParameterAndNeedShortField ECPublicKeyNeeds2ParameterAndNeedShortField ECPublicKeygetBMethodNeeds2ParameterAndNeedShortField ECPublicKeygetGMethodNeeds2ParameterAndNeedShortField ECPublicKeygetRMethodNeeds2ParameterAndNeedShortField ECPublicKeygetKMethodNeedsShortFieldButDontNeedAnyParameters"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="ECPublicKeysetWMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setW implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPublicKeygetWMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getW implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPrivateKeysetFieldFPMethodNeeds3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=ECPrivateKeyMethods::setFieldFP implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPublicKeysetsetFieldF2MMethodNeeds1OR3ParameterButDontNeedAnyField"
          value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setFieldF2M implies&#xA;&#x9;&#x9;(self.parameters->size()=1 or self.parameters->size()=3) and self.fields->size()=0"/>
      <details key="ECPublicKeysetAMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setA implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPublicKeysetBMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setB implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPublicKeysetGMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setG implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPublicKeysetRMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setR implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="ECPublicKeysetKMethodNeeds1ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::setK implies&#xA;&#x9;&#x9;self.parameters->size()=1 and self.fields->size()=0"/>
      <details key="ECPublicKeygetFieldMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getField implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPublicKeyNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getA implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPublicKeygetBMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getB implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPublicKeygetGMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getG implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPublicKeygetRMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getR implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="ECPublicKeygetKMethodNeedsShortFieldButDontNeedAnyParameters"
          value="&#xA;&#x9;&#x9;self.method=ECPublicKeyMethods::getK implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//ECPublicKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ECPublicKeyMethods">
    <eLiterals name="setW"/>
    <eLiterals name="getW" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
    <eLiterals name="setFieldFP" value="6"/>
    <eLiterals name="setFieldF2M" value="7"/>
    <eLiterals name="setA" value="8"/>
    <eLiterals name="setB" value="9"/>
    <eLiterals name="setG" value="10"/>
    <eLiterals name="setR" value="11"/>
    <eLiterals name="setK" value="12"/>
    <eLiterals name="getField" value="13"/>
    <eLiterals name="getA" value="14"/>
    <eLiterals name="getB" value="15"/>
    <eLiterals name="getG" value="16"/>
    <eLiterals name="getR" value="17"/>
    <eLiterals name="getK" value="18"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Key">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="KeyclearKeyMethodDontNeedAnyParameter KeygetSizeMethodDontNeedAnyParameter KeygetTypeMethodDontNeedAnyParameter KeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="KeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="KeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="KeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="KeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//KeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyMethods">
    <eLiterals name="clearKey"/>
    <eLiterals name="getSize" value="1"/>
    <eLiterals name="getType" value="2"/>
    <eLiterals name="isInitialized" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PrivateKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="PrivateKeyclearKeyMethodDontNeedAnyParameter PrivateKeygetSizeMethodDontNeedAnyParameter PrivateKeygetTypeMethodDontNeedAnyParameter PrivateKeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="PrivateKeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PrivateKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="PrivateKeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PrivateKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="PrivateKeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PrivateKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="PrivateKeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PrivateKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//PrivateKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PrivateKeyMethods">
    <eLiterals name="clearKey"/>
    <eLiterals name="getSize" value="1"/>
    <eLiterals name="getType" value="2"/>
    <eLiterals name="isInitialized" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RSAPrivateKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="RSAPrivateKeysetModulusMethodNeeds3Parameter RSAPrivateKeysetExponentMethodNeeds3Parameter RSAPrivateKeygetModulusMethodNeeds2Parameter RSAPrivateKeygetExponentMethodNeeds2Parameter RSAPrivateKeyclearKeyMethodDontNeedAnyParameter RSAPrivateKeygetSizeMethodDontNeedAnyParameter RSAPrivateKeygetTypeMethodDontNeedAnyParameter RSAPrivateKeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="RSAPrivateKeysetModulusMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::setModulus implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateKeysetExponentMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::setExponent implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateKeygetModulusMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::getModulus implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateKeygetExponentMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::getExponent implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateKeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPrivateKeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPrivateKeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPrivateKeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//RSAPrivateKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="RSAPrivateKeyMethods">
    <eLiterals name="setModulus"/>
    <eLiterals name="setExponent" value="1"/>
    <eLiterals name="getModulus" value="2"/>
    <eLiterals name="getExponent" value="3"/>
    <eLiterals name="clearKey" value="4"/>
    <eLiterals name="getSize" value="5"/>
    <eLiterals name="getType" value="6"/>
    <eLiterals name="isInitialized" value="7"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RSAPrivateCrtKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="RSAPrivateCrtKeysetPMethodNeeds3Parameter RSAPrivateCrtKeysetQMethodNeeds3Parameter RSAPrivateCrtKeysetDP1MethodNeeds3Parameter RSAPrivateCrtKeysetDQ1MethodNeeds3Parameter RSAPrivateCrtKeysetPQMethodNeeds3Parameter RSAPrivateCrtKeygetPMethodNeeds2Parameter RSAPrivateCrtKeygetQMethodNeeds2Parameter RSAPrivateCrtKeygetDP1MethodNeeds2Parameter RSAPrivateCrtKeygetDQ1MethodNeeds2Parameter RSAPrivateCrtKeygetPQMethodNeeds2Parameter RSAPrivateCrtKeyclearKeyMethodDontNeedAnyParameter RSAPrivateCrtKeygetSizeMethodDontNeedAnyParameter RSAPrivateCrtKeygetTypeMethodDontNeedAnyParameter RSAPrivateCrtKeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="RSAPrivateCrtKeysetPMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::setP implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateCrtKeysetQMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::setQ implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateCrtKeysetDP1MethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::setDP1 implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateCrtKeysetDQ1MethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::setDQ1 implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateCrtKeysetPQMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::setPQ implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPrivateCrtKeygetPMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getP implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateCrtKeygetQMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getQ implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateCrtKeygetDP1MethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getDP1 implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateCrtKeygetDQ1MethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getDQ1 implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateCrtKeygetPQMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getPQ implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPrivateCrtKeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPrivateCrtKeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPrivateCrtKeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPrivateCrtKeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=RSAPrivateCrtKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//RSAPrivateCrtKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="RSAPrivateCrtKeyMethods">
    <eLiterals name="setP"/>
    <eLiterals name="setQ" value="1"/>
    <eLiterals name="setDP1" value="2"/>
    <eLiterals name="setDQ1" value="3"/>
    <eLiterals name="setPQ" value="4"/>
    <eLiterals name="getP" value="5"/>
    <eLiterals name="getQ" value="6"/>
    <eLiterals name="getDP1" value="7"/>
    <eLiterals name="getDQ1" value="8"/>
    <eLiterals name="getPQ" value="9"/>
    <eLiterals name="clearKey" value="10"/>
    <eLiterals name="getSize" value="11"/>
    <eLiterals name="getType" value="12"/>
    <eLiterals name="isInitialized" value="13"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="PublicKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="PublicKeyclearKeyMethodDontNeedAnyParameter PublicKeygetSizeMethodDontNeedAnyParameter PublicKeygetTypeMethodDontNeedAnyParameter PublicKeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="PublicKeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PublicKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="PublicKeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PublicKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="PublicKeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PublicKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="PublicKeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=PublicKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//PublicKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="PublicKeyMethods">
    <eLiterals name="clearKey"/>
    <eLiterals name="getSize" value="1"/>
    <eLiterals name="getType" value="2"/>
    <eLiterals name="isInitialized" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="RSAPublicKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="RSAPublicKeysetModulusMethodNeeds3Parameter RSAPublicKeysetExponentMethodNeeds3Parameter RSAPublicKeygetModulusMethodNeeds2ParameterDontForgetTheInitializeTheseValues RSAPublicKeygetExponentMethodNeeds2ParameterDontForgetTheInitializeTheseValues RSAPublicKeyclearKeyMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues RSAPublicKeygetSizeMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues RSAPublicKeygetTypeMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues RSAPublicKeyisInitializedMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="RSAPublicKeysetModulusMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::setModulus implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPublicKeysetExponentMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::setExponent implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="RSAPublicKeygetModulusMethodNeeds2ParameterDontForgetTheInitializeTheseValues"
          value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::getModulus implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPublicKeygetExponentMethodNeeds2ParameterDontForgetTheInitializeTheseValues"
          value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::getExponent implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="RSAPublicKeyclearKeyMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues"
          value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPublicKeygetSizeMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues"
          value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPublicKeygetTypeMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues"
          value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="RSAPublicKeyisInitializedMethodDontNeedAnyParameterDontForgetTheInitializeTheseValues"
          value="&#xA;&#x9;&#x9;self.method=RSAPublicKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//RSAPublicKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="RSAPublicKeyMethods">
    <eLiterals name="setModulus"/>
    <eLiterals name="setExponent" value="1"/>
    <eLiterals name="getModulus" value="2"/>
    <eLiterals name="getExponent" value="3"/>
    <eLiterals name="clearKey" value="4"/>
    <eLiterals name="getSize" value="5"/>
    <eLiterals name="getType" value="6"/>
    <eLiterals name="isInitialized" value="7"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="SecretKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="SecretKeyclearKeyMethodDontNeedAnyParameter SecretKeygetSizeMethodDontNeedAnyParameter SecretKeygetTypeMethodDontNeedAnyParameter SecretKeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="SecretKeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=SecretKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="SecretKeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=SecretKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="SecretKeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=SecretKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="SecretKeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=SecretKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//SecretKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SecretKeyMethods">
    <eLiterals name="clearKey"/>
    <eLiterals name="getSize" value="1"/>
    <eLiterals name="getType" value="2"/>
    <eLiterals name="isInitialized" value="3"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AESKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="AESKeysetKeyMethodNeeds2ParameterButDontNeedAnyField AESKeygetKeyMethodNeeds2ParameterAndNeedByteField AESKeyclearKeyMethodDontNeedAnyParameterAndField AESKeygetSizeMethodDontNeedAnyParameterButNeedShortField AESKeygetTypeMethodDontNeedAnyParameterButNeedByteField AESKeyisInitializedMethodDontNeedAnyParameterButNeedBooleanField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="AESKeysetKeyMethodNeeds2ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=AESKeyMethods::setKey implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->size()=0"/>
      <details key="AESKeygetKeyMethodNeeds2ParameterAndNeedByteField" value="&#xA;&#x9;&#x9;self.method=AESKeyMethods::getKey implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="AESKeyclearKeyMethodDontNeedAnyParameterAndField" value="&#xA;&#x9;&#x9;self.method=AESKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->size()=0"/>
      <details key="AESKeygetSizeMethodDontNeedAnyParameterButNeedShortField" value="&#xA;&#x9;&#x9;self.method=AESKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(e | e.dataType &lt;> DataTypes::short)"/>
      <details key="AESKeygetTypeMethodDontNeedAnyParameterButNeedByteField" value="&#xA;&#x9;&#x9;self.method=AESKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(e | e.dataType &lt;> DataTypes::byte)"/>
      <details key="AESKeyisInitializedMethodDontNeedAnyParameterButNeedBooleanField"
          value="&#xA;&#x9;&#x9;self.method=AESKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(e | e.dataType &lt;> DataTypes::boolean)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//AESKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="AESKeyMethods">
    <eLiterals name="setKey"/>
    <eLiterals name="getKey" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="DESKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="DESKeysetKeyMethodNeeds2ParameterButDontNeedAnyField DESKeygetKeyMethodNeeds2ParameterAndByteField DESKeyclearKeyMethodDontNeedAnyParameterAndField DESKeygetSizeMethodDontNeedAnyParameterButNeedShortField DESKeygetTypeMethodDontNeedAnyParameterButNeedByteField DESKeyisInitializedMethodDontNeedAnyParameterButNeedBooleanField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="DESKeysetKeyMethodNeeds2ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=DESKeyMethods::setKey implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->size()=0"/>
      <details key="DESKeygetKeyMethodNeeds2ParameterAndByteField" value="&#xA;&#x9;&#x9;self.method=DESKeyMethods::getKey implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::byte)"/>
      <details key="DESKeyclearKeyMethodDontNeedAnyParameterAndField" value="&#xA;&#x9;&#x9;self.method=DESKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->size()=0"/>
      <details key="DESKeygetSizeMethodDontNeedAnyParameterButNeedShortField" value="&#xA;&#x9;&#x9;self.method=DESKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="DESKeygetTypeMethodDontNeedAnyParameterButNeedByteField" value="&#xA;&#x9;&#x9;self.method=DESKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::byte)"/>
      <details key="DESKeyisInitializedMethodDontNeedAnyParameterButNeedBooleanField"
          value="&#xA;&#x9;&#x9;self.method=DESKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::boolean)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//DESKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="DESKeyMethods">
    <eLiterals name="setKey"/>
    <eLiterals name="getKey" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="HMACKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="HMACKeysetKeyMethodNeeds3ParameterButDontNeedAnyField HMACKeygetKeyMethodNeeds2ParameterAndNeedShortField HMACKeyclearKeyMethodDontNeedAnyParameterAndField HMACKeygetSizeMethodDontNeedAnyParameterButNeedShortField HMACKeygetTypeMethodDontNeedAnyParameterButNeedByteField HMACKeyisInitializedMethodDontNeedAnyParameterButNeedBooleanField"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="HMACKeysetKeyMethodNeeds3ParameterButDontNeedAnyField" value="&#xA;&#x9;&#x9;self.method=HMACKeyMethods::setKey implies&#xA;&#x9;&#x9;self.parameters->size()=3 and self.fields->size()=0"/>
      <details key="HMACKeygetKeyMethodNeeds2ParameterAndNeedShortField" value="&#xA;&#x9;&#x9;self.method=HMACKeyMethods::getKey implies&#xA;&#x9;&#x9;self.parameters->size()=2 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="HMACKeyclearKeyMethodDontNeedAnyParameterAndField" value="&#xA;&#x9;&#x9;self.method=HMACKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->size()=0"/>
      <details key="HMACKeygetSizeMethodDontNeedAnyParameterButNeedShortField" value="&#xA;&#x9;&#x9;self.method=HMACKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::short)"/>
      <details key="HMACKeygetTypeMethodDontNeedAnyParameterButNeedByteField" value="&#xA;&#x9;&#x9;self.method=HMACKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::byte)"/>
      <details key="HMACKeyisInitializedMethodDontNeedAnyParameterButNeedBooleanField"
          value="&#xA;&#x9;&#x9;self.method=HMACKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0 and self.fields->forAll(x|x.dataType = DataTypes::boolean)"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//HMACKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="HMACKeyMethods">
    <eLiterals name="setKey"/>
    <eLiterals name="getKey" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="KoreanSEEDKey">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="KoreanSEEDKeysetKeyMethodNeeds2Parameter KoreanSEEDKeygetKeyMethodNeeds2Parameter KoreanSEEDKeyclearKeyMethodDontNeedAnyParameter KoreanSEEDKeygetSizeMethodDontNeedAnyParameter KoreanSEEDKeygetTypeMethodDontNeedAnyParameter KoreanSEEDKeyisInitializedMethodDontNeedAnyParameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="KoreanSEEDKeysetKeyMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=KoreanSEEDKeyMethods::setKey implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="KoreanSEEDKeygetKeyMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=KoreanSEEDKeyMethods::getKey implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="KoreanSEEDKeyclearKeyMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KoreanSEEDKeyMethods::clearKey implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="KoreanSEEDKeygetSizeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KoreanSEEDKeyMethods::getSize implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="KoreanSEEDKeygetTypeMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KoreanSEEDKeyMethods::getType implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
      <details key="KoreanSEEDKeyisInitializedMethodDontNeedAnyParameter" value="&#xA;&#x9;&#x9;self.method=KoreanSEEDKeyMethods::isInitialized implies&#xA;&#x9;&#x9;self.parameters->size()=0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//KoreanSEEDKeyMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KoreanSEEDKeyMethods">
    <eLiterals name="setKey"/>
    <eLiterals name="getKey" value="1"/>
    <eLiterals name="clearKey" value="2"/>
    <eLiterals name="getSize" value="3"/>
    <eLiterals name="getType" value="4"/>
    <eLiterals name="isInitialized" value="5"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="SignatureMessageRecovery">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="SignatureMessageRecoveryinitMethodNeeds2Parameter SignatureMessageRecoverybeginVerifyMethodNeeds3Parameter SignatureMessageRecoverysignMethodNeeds7Parameter SignatureMessageRecoveryverifyMethodNeeds3Parameter SignatureMessageRecoveryupdateMethodNeeds3Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="SignatureMessageRecoveryinitMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMessageRecoveryMethods::init implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="SignatureMessageRecoverybeginVerifyMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMessageRecoveryMethods::beginVerify implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="SignatureMessageRecoverysignMethodNeeds7Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMessageRecoveryMethods::sign implies&#xA;&#x9;&#x9;self.parameters->size()=7"/>
      <details key="SignatureMessageRecoveryverifyMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMessageRecoveryMethods::verify implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
      <details key="SignatureMessageRecoveryupdateMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=SignatureMessageRecoveryMethods::update implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//SignatureMessageRecoveryMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="SignatureMessageRecoveryMethods">
    <eLiterals name="init"/>
    <eLiterals name="beginVerify" value="1"/>
    <eLiterals name="sign" value="2"/>
    <eLiterals name="verify" value="3"/>
    <eLiterals name="getAlgorithm" value="4"/>
    <eLiterals name="getLength" value="5"/>
    <eLiterals name="update" value="6"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ISO7816">
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="iso7816Field" eType="#//ISO7816Fields"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="spiralFieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ISOExceptionthrowIt" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ISO7816Fields">
    <eLiterals name="none"/>
    <eLiterals name="SW_NO_ERROR" value="1"/>
    <eLiterals name="SW_BYTES_REMAINING_00" value="2"/>
    <eLiterals name="SW_WRONG_LENGTH" value="3"/>
    <eLiterals name="SW_SECURITY_STATUS_NOT_SATISFIED" value="4"/>
    <eLiterals name="SW_FILE_INVALID" value="5"/>
    <eLiterals name="SW_DATA_INVALID" value="6"/>
    <eLiterals name="SW_CONDITIONS_NOT_SATISFIED" value="7"/>
    <eLiterals name="SW_COMMAND_NOT_ALLOWED" value="8"/>
    <eLiterals name="SW_APPLET_SELECT_FAILED" value="9"/>
    <eLiterals name="SW_WRONG_DATA" value="10"/>
    <eLiterals name="SW_FUNC_NOT_SUPPORTED" value="11"/>
    <eLiterals name="SW_FILE_NOT_FOUND" value="12"/>
    <eLiterals name="SW_RECORD_NOT_FOUND" value="13"/>
    <eLiterals name="SW_INCORRECT_P1P2" value="14"/>
    <eLiterals name="SW_WRONG_P1P2" value="15"/>
    <eLiterals name="SW_CORRECT_LENGTH_00" value="16"/>
    <eLiterals name="SW_INS_NOT_SUPPORTED" value="17"/>
    <eLiterals name="SW_CLA_NOT_SUPPORTED" value="18"/>
    <eLiterals name="SW_UNKNOWN" value="19"/>
    <eLiterals name="SW_FILE_FULL" value="20"/>
    <eLiterals name="SW_LOGICAL_CHANNEL_NOT_SUPPORTED" value="21"/>
    <eLiterals name="SW_SECURE_MESSAGING_NOT_SUPPORTED" value="22"/>
    <eLiterals name="SW_WARNING_STATE_UNCHANGED" value="23"/>
    <eLiterals name="SW_LAST_COMMAND_EXPECTED" value="24"/>
    <eLiterals name="SW_COMMAND_CHAINING_NOT_SUPPORTED" value="25"/>
    <eLiterals name="OFFSET_CLA" value="26"/>
    <eLiterals name="OFFSET_INS" value="27"/>
    <eLiterals name="OFFSET_P1" value="28"/>
    <eLiterals name="OFFSET_P2" value="29"/>
    <eLiterals name="OFFSET_LC" value="30"/>
    <eLiterals name="OFFSET_CDATA" value="31"/>
    <eLiterals name="OFFSET_EXT_CDATA" value="32"/>
    <eLiterals name="CLA_ISO7816" value="33"/>
    <eLiterals name="INS_SELECT" value="34"/>
    <eLiterals name="INS_EXTERNAL_AUTHENTICATE" value="35"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="KeyEncryption">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="KeyEncryptionsetKeyCipherMethodNeeds1Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="KeyEncryptionsetKeyCipherMethodNeeds1Parameter" value="&#xA;&#x9;&#x9;self.method=KeyEncryptionMethods::setKeyCipher implies&#xA;&#x9;&#x9;self.parameters->size()=1"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//KeyEncryptionMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="KeyEncryptionMethods">
    <eLiterals name="setKeyCipher"/>
    <eLiterals name="getKeyCipher" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Util">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="UtilarrayCopyMethodNeeds5Parameter UtilarrayCopyNonAtomicMethodNeeds5Parameter UtilarrayFillNonAtomicMethodNeeds4Parameter UtilarrayCompareMethodNeeds5Parameter UtilmakeShortMethodNeeds2Parameter UtilgetShortMethodNeeds2Parameter UtilsetShortMethodNeeds3Parameter"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="UtilarrayCopyMethodNeeds5Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::arrayCopy implies&#xA;&#x9;&#x9;self.parameters->size()=5"/>
      <details key="UtilarrayCopyNonAtomicMethodNeeds5Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::arrayCopyNonAtomic implies&#xA;&#x9;&#x9;self.parameters->size()=5"/>
      <details key="UtilarrayFillNonAtomicMethodNeeds4Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::arrayFillNonAtomic implies&#xA;&#x9;&#x9;self.parameters->size()=4"/>
      <details key="UtilarrayCompareMethodNeeds5Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::arrayCompare implies&#xA;&#x9;&#x9;self.parameters->size()=5"/>
      <details key="UtilmakeShortMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::makeShort implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="UtilgetShortMethodNeeds2Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::getShort implies&#xA;&#x9;&#x9;self.parameters->size()=2"/>
      <details key="UtilsetShortMethodNeeds3Parameter" value="&#xA;&#x9;&#x9;self.method=UtilMethods::setShort implies&#xA;&#x9;&#x9;self.parameters->size()=3"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" eType="#//Field"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="method" eType="#//UtilMethods"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
        eType="#//Parameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceVariable" eType="#//InstanceVariable"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="UtilMethods">
    <eLiterals name="arrayCopy"/>
    <eLiterals name="arrayCopyNonAtomic" value="1"/>
    <eLiterals name="arrayFillNonAtomic" value="2"/>
    <eLiterals name="arrayCompare" value="3"/>
    <eLiterals name="makeShort" value="4"/>
    <eLiterals name="getShort" value="5"/>
    <eLiterals name="setShort" value="6"/>
    <eLiterals name="equals" value="7"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="InstanceVariable">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="InstanceVariableNameMustGreaterThanZeroANDWordsMustBeUnited Warning_DontForgetTheDefineInstanceVariable"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="InstanceVariableNameMustGreaterThanZeroANDWordsMustBeUnited" value="&#xA;&#x9;&#x9;self.instanceVariableName.size()>0"/>
      <details key="Warning_DontForgetTheDefineInstanceVariable" value="&#xA;&#x9;&#x9;self.instanceVariableName.size()>0"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="instanceVariableName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
</ecore:EPackage>
